是否可以通过用户可编辑的bash脚本将文本输出到shell窗口?我本质上想要预先填写某些信息,并让用户能够在错误的情况下编辑它。
例如,如果我要写一个脚本:
echo -n "Enter your name: Anthony"
while read user_input
do
# do stuff with $user_input
done
如何允许用户内联编辑单词Anthony
(也就是说,不允许退回A
中的Anthony
),如何在按下 RETURN 键后将值存储到变量中?
修改
我正在寻找与-i
(see answer posted here)的read
选项类似的内容,但这仅适用于bash 4+。 bash 3有替代方案吗?
答案 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,但是它完成了工作。