用户可编辑的回声文本

时间:2013-02-18 18:42:40

标签: linux bash shell unix

是否可以通过用户可编辑的bash脚本将文本输出到shell窗口?我本质上想要预先填写某些信息,并让用户能够在错误的情况下编辑它。

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

echo -n "Enter your name: Anthony"

while read user_input
do
    # do stuff with $user_input
done

如何允许用户内联编辑单词Anthony (也就是说,不允许退回A中的Anthony),如何在按下 RETURN 键后将值存储到变量中?

修改

我正在寻找与-isee answer posted here)的read选项类似的内容,但这仅适用于bash 4+。 bash 3有替代方案吗?

1 个答案:

答案 0 :(得分:0)

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

$ 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,但是它完成了工作。