有什么用;在单行命令中?

有什么用;在单行命令中?

;在这样的单行脚本中意味着什么:

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很奇怪。但你会习惯的。

相关内容