
我有一個包含 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
?