【发布时间】:2019-10-27 15:47:01
【问题描述】:
我需要在可以在 BASH 和 ZSH 中运行的 shell 脚本中接受用户输入。我习惯于在其他语言中使用readline,但这在 shell 脚本中似乎不是一个可行的选择。
一个示例提示可能是:
Please enter the value> 1234_
如何向用户提供可编辑的输入,该输入具有可编辑(退格)且与两个 shell 兼容的默认值?
【问题讨论】:
-
对于zsh,你可能想看看ZLE模块的
varedbuiltin。这是一个猜测,i=1234; vared -p 'Please enter the value> ' i -
没有任何东西可以在两个 shell 中工作,因为每个 shell 使用不同的行编辑器(
bash为 Readline,zsh为 ZLE)。 -
@Cyrus 谢谢!你成就了我的一天 :-) 你可能还想包含一个变量(例如,称为“答案”),在其中存储用户输入:
read -e -p 'Please enter the value> ' -i '1234' answer的结果类似于:Please enter the value> 1236。显示编辑后的用户输入,例如:echo "$answer"1236 -
@BernieReiter:这当然是可能的,但不是绝对必要的。如果未指定变量,
read将使用变量REPLY。如果指定变量,代码当然更容易理解。 -
@cyrus 我把你的评论变成了下面的答案。 IMO 最初可能应该是一个答案。