linux - 用户可编辑的回显文本

标签 linux bash shell unix

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

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

echo -n "Enter your name: Anthony"

while read user_input
do
    # do stuff with $user_input
done

我如何允许用户内联编辑单词 Anthony only(又名,不允许退格 A Anthony),以及如何在按下 RETURN 键后将值存储到变量中?

编辑

我正在寻找类似于 read ( see answer posted here ) 的 -i 选项的东西,但这仅适用于 bash 4+。 bash 3 有替代品吗?

最佳答案

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

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

关于linux - 用户可编辑的回显文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14943199/

相关文章:

linux - 从汇编文件中读取

bash - 需要在新的 Git 标签上运行 "hook"(用于新 pull 标签的 Git Hook )

python - 具有多个 papermill 命令的 Bash 脚本不会因笔记本错误而失败

linux - Grep 在目录中的所有文件中搜索 string1 和 string2

bash - 将文件从一个位置复制到另一个位置并重命名的 Shell 脚本将当前日期添加到每个文件

python - Linux Python Pygame 无法访问/etc/alsa/alsa.conf

c++ - Ubuntu 14.04 中的 OpenGL 4.3 开发设置

bash - shell脚本换桌面壁纸

shell - AWK:在每一行上执行 CURL 并解析结果

linux - linux 内核如何处理对/sys/power/state 的写入