shell 'read'命令立即返回,而不是等待输入

u4vypkhs  于 2023-02-19  发布在  Shell
关注(0)|答案(1)|浏览(203)

我正在尝试创建一个简单的zsh小部件,它要求用户输入字符串,然后将其设置为当前命令提示符

zle -N replace-command-buffer
bindkey '\eg' replace-command-buffer

replace-command-buffer() {
  local input
  echo "Enter a string: "
  read -r input
  BUFFER="$input"
  zle reset-prompt
}

但是读命令没有等待输入就立即返回。我该怎么解决这个问题?

g52tjvyc

g52tjvyc1#

zle执行的函数的标准输入从/dev/null重定向,因此shell的标准输入不可用。
您可能需要执行recursive-edit小部件,它将设置BUFFER本身。

replace-command-buffer () {
    printf "Enter a string: "
    zle recursive-edit
    zle reset-prompt
}

相关问题