1
如何捕捉用管道調用的shell腳本的輸入,而不會永遠等待輸入的風險?外殼:捕捉用戶輸入與貓
echo "hello world" | mysript.sh
在腳本中,我嘗試獲取輸入:
input=$(cat)
但在某些情況下cat
命令導致整個腳本超時,因爲它等待輸入。
如何捕捉用管道調用的shell腳本的輸入,而不會永遠等待輸入的風險?外殼:捕捉用戶輸入與貓
echo "hello world" | mysript.sh
在腳本中,我嘗試獲取輸入:
input=$(cat)
但在某些情況下cat
命令導致整個腳本超時,因爲它等待輸入。
假設要處理從shell腳本管道數據,嘗試:
在腳本:
read LINE
echo $LINE
在命令行:
echo "hello world" | ./mysript.sh
在這種情況下,hello world
會讀入LINE
。
嘗試使用包含匹配模式的任何內容,例如「/ etc/*'」(即雙引號「$ LINE」)。 – Kusalananda
你想捕捉輸入,但你不想等待輸入? –
輸入必須以EOF = ctrl + D結束。 –
請考慮在腳本中使用'read'。您可以逐行讀取,而且您的shell可能支持超時和單字符讀取等額外工具。 – ghoti