我不明白为什么在这个用例中没有显示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,并观察与真正的交互式会话非常相似的行为。
答案 0 :(得分:1)
-p提示
在尝试读取任何输入之前,显示提示,没有尾随换行符。仅当输入来自终端时,提示才会显示。
当您使用here-doc或here-string时,输入来自管道,而不是终端,因此不会显示提示。
您可以使用Expect自动执行命令来解决此问题,而不是重定向输入。