;
在這樣的單行腳本中意味著什麼:
while true; do sudo -n true; sleep 60; kill -0 '$$' || exit; done 2>/dev/null &
這是否意味著換行或“下一個命令”?
答案1
它是命令的分隔符號。儘管在第一種情況下,最好將其視為聲明的結束while
。
例如,如果您想在某個命令返回成功時執行循環,您可以執行類似的操作
while test -f /foo; do some_command; done`
分號用於指示 的參數結束test
。否則它會認為這do
是另一個論點test
。
但是,您可以使用換行符號來代替分號。以下內容與上面的範例完全相同,但沒有任何分號
while test -f /foo
do
some_command
done
事實上,對於 bash,如果您運行上面的命令,然後在它完成後(或您 CTRL+C),如果您返回歷史記錄(向上箭頭鍵或諸如此類的東西),您會注意到它替換了多行命令與一個使用分號代替。
if
所以是的,像and之類的語法while
會破壞正常的 shell 行為。
我個人一直認為文法很奇怪,因為看起來do
很奇怪。但你會習慣的。