有什麼用;在單行命令中?

有什麼用;在單行命令中?

;在這樣的單行腳本中意味著什麼:

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很奇怪。但你會習慣的。

相關內容