3

是否可以通过用户可编辑的 bash 脚本将文本输出到 shell 窗口?我基本上想预先填写某些信息,并让用户能够在错误时对其进行编辑。

例如,如果我要写一个脚本:

echo -n "Enter your name: Anthony"

while read user_input
do
    # do stuff with $user_input
done

如何允许用户Anthony 内联编辑单词(也就是不允许在 in 之后退格AAnthony,以及如何在RETURN按下键后将值存储到变量中?

编辑

我正在寻找类似于(请参阅此处发布的答案-i)的选项,但这仅在 bash 4+ 上可用。bash 3 有替代方案吗?read

4

1 回答 1

1

我最近需要类似的设置,所以我所做的是

$ cat a.sh
function input {
  python -c '
import sys,readline
readline.set_startup_hook(lambda: readline.insert_text(sys.argv[2]))
sys.stderr.write(raw_input(sys.argv[1]))
' "$@" 3>&1 1>&2 2>&3
}

A=$( input 'question: ' default )
echo "A='$A'"

$ ./a.sh
question: default
A='default'

好吧,它实际上不是 bash,但它完成了工作。

于 2013-05-10T20:28:58.760 回答