Linux
使用文件輸入作為 shell 腳本的標準輸入不起作用
我有以下腳本程式碼:
test.sh
echo "BEGIN" while read CMD <&1; do [ -z "$CMD" ] && continue case "$CMD" in start) echo "get_start" ;; stop) echo "get_stop" ;; *) echo "get_uknown_command" ;; esac echo "END"; done
當我執行它時:
$./test.sh <input.txt
我的腳本被鎖定
輸入.txt
start stop sthh
為什麼我的腳本被鎖定?我該如何解決?
順便說一句:如果我手動輸入數據,那麼腳本將不會鎖定。
您的第二行不正確,而且無論如何都過於復雜。、 和的文件描述符分別是、
stdin
和,因此要從中讀取,您需要stdout``stderr``0``1``2``stdin
while read CMD <&0; do
但是,由於
stdin
是 的預設輸入read
,while read CMD; do
確實是最簡單的方法。這樣,您可以手動輸入命令,或在命令行上使用重定向來讀取文件。