val*_*zka 40 syntax sh dash-shell
我试图找到并行运行多个命令的方法sh并等待它完成.我发现以下不起作用(sh: 1: Syntax error: ";" unexpected):
sh -c '(sleep 3 && echo 1) & ; (sleep 3 && echo 2) & ; wait'
Run Code Online (Sandbox Code Playgroud)
但是这种语法按预期工作:
sh -c '(sleep 3 && echo 1) & ;; (sleep 3 && echo 2) & ;; wait'
Run Code Online (Sandbox Code Playgroud)
但我不明白有什么区别.我的问题是;;它应该被使用的含义是什么?
Gil*_*il' 59
;;仅用于case构造,以指示替代的结束.(它存在break于C中的位置)
case $answer in
yes) echo 'yay!';;
no) echo 'boo!';;
esac
Run Code Online (Sandbox Code Playgroud)
语法上,;并且&两个标记命令的结束.换行符相当于;第一个近似值.它们之间的区别在于,;换行符表示该命令必须在前台执行,而&表示该命令必须在后台执行.
所以在这里你需要& wait.& ;是语法错误(您不能有空命令).& ;;也是一个语法错误; 灰烬让它走了(就好像你刚写的那样&),但是bash抱怨道.显然你的sh是一些灰变种(例如破折号,这是/bin/sh许多Debian衍生物).
| 归档时间: |
|
| 查看次数: |
18832 次 |
| 最近记录: |