我有一个包含 bash 命令列表的文件,如下所示:
echo 'foobar'
echo 'helloworld'
echo 'ok'
我可以通过简单地通过管道来执行这些命令,/bin/bash
如下所示:
cat commands | /bin/bash
现在,如何在中间暂停执行并等待用户输入?使用read
似乎不起作用。
echo 'foobar'
echo 'helloworld'
read -p 'Press ENTER to continue'
echo 'ok'
答案1
像这样执行:
/bin/bash commands
将文件通过管道传输到bash
使文件通过 的 stdin 传输bash
。在这种情况下read
,从标准输入读取,从管道流而不是从终端读取。它消耗echo 'ok'
.通过将文件指定为参数,bash
您仍然可以执行它,但这次标准输入不会重定向。
我假设你想像这样执行。比较bash script.sh
运行和 和有什么不一样./script.sh
?