如何强制交互式Bash shell回显`read`提示?

时间:2016-11-09 22:42:16

标签: bash

我不明白为什么在这个用例中没有显示read提示符和答案:

bash-4.3.30$ bash -i  <<< 'read -p prompt
answer
echo $REPLY'

我本来期待“提示”和“ “回答”显示。但相反,我得到了:

sylvain@bulbizarre:~$ read -p prompt
sylvain@bulbizarre:~$ echo $REPLY
answer
sylvain@bulbizarre:~$ exit

FWIW,这是mcve。我理解上下文这看起来很愚蠢。但我真的想用一些命令提供交互式 shell,并观察与真正的交互式会话非常相似的行为。

1 个答案:

答案 0 :(得分:1)

来自documentation

  

-p提示
  在尝试读取任何输入之前,显示提示,没有尾随换行符。仅当输入来自终端时,提示才会显示

当您使用here-doc或here-string时,输入来自管道,而不是终端,因此不会显示提示。

您可以使用Expect自动执行命令来解决此问题,而不是重定向输入。