Shell-Script
並行執行命令並等待一組命令完成,然後再開始下一個
我有包含多個命令的腳本。如何將命令分組在一起執行(我想製作幾組命令。在每個組中,命令應該並行執行(同時)。這些組應該按順序執行,等待一組完成後再開始下一組)…即
#!/bin/bash command #1 command #2 command #3 command #4 command #5 command #6 command #7 command #8 command #9 command #10
我怎樣才能執行每 3 個命令來聚集?我試過:
#!/bin/bash { command #1 command #2 command #3 } & { command #4 command #5 command #6 } & { command #7 command #8 command #9 }& command #10
但這不能正常工作(我想同時並行執行多組命令。另外我需要等待第一組完成後再執行下一組)
腳本正在退出並顯示錯誤消息!
每組內的命令並行執行,各組按順序執行,每組並行命令等待上一組執行完畢後才開始執行。
以下是一個工作範例:
假設有 3 組命令,如下面的程式碼所示。在每組中,三個命令在後台以
&
.這 3 個命令將幾乎同時啟動,並在腳本
waits
完成時並行執行。在第三組中的三個命令全部退出後,
command 10
將執行。$ cat command_groups.sh #!/bin/sh command() { echo $1 start sleep $(( $1 & 03 )) # keep the seconds value within 0-3 echo $1 complete } echo First Group: command 1 & command 2 & command 3 & wait echo Second Group: command 4 & command 5 & command 6 & wait echo Third Group: command 7 & command 8 & command 9 & wait echo Not really a group, no need for background/wait: command 10 $ sh command_groups.sh First Group: 1 start 2 start 3 start 1 complete 2 complete 3 complete Second Group: 4 start 5 start 6 start 4 complete 5 complete 6 complete Third Group: 7 start 8 start 9 start 8 complete 9 complete 7 complete Not really a group, no need for background/wait: 10 start 10 complete $