gpt4 book ai didi

syntax - 破折号双分号 (;;) 语法

转载 作者:行者123 更新时间:2023-12-03 07:03:40 25 4
gpt4 key购买 nike

我正在尝试找到一种在 sh 中并行运行多个命令并等待其完成的方法。

我发现以下内容不起作用(sh:1:语法错误:“;”意外):

sh -c '(sleep 3 && echo 1) & ; (sleep 3 && echo 2) & ;  wait'

但是这个语法按预期工作:

sh -c '(sleep 3 && echo 1) & ;; (sleep 3 && echo 2) & ;;  wait'

但我不明白有什么区别。

;; 的含义是什么以及何时使用?

最佳答案

;; 仅在 case 结构中使用,以指示替代项的结束。 (它出现在 C 中 break 的位置。)

case $answer in
yes) echo 'yay!';;
no) echo 'boo!';;
esac

从语法上来说,;& 都标记命令的结束。在第一个近似中,换行符相当于 ;。它们的区别在于,;或换行符表示该命令必须在前台执行,而&表示该命令必须在后台执行。

所以这里你需要&等待& ; 是语法错误(不能有空命令)。 & ;; 也是一个语法错误; ash 让它走(就好像你只写了 &),但 bash 提示。显然,您的 sh 是某种 ash 变体(例如 dash,在许多 Debian 衍生品上是 /bin/sh)。

关于syntax - 破折号双分号 (;;) 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16905183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com