Command
命令分組
我理解
&
命令序列末尾的 & 號在後台執行它(在“並行”中),分號;
允許順序(在“系列”中),括號允許命令分組。假設我有一個
bash
包含一些命令的文件:#!/bin/bash cmd1 cmd2 cmd3 cmd4
如果我想應用命令分組,例如,並行執行前兩個,等待,然後並行執行接下來的兩個,我應該把?:
#!/bin/bash ( \ cmd1 & cmd2 & ); \ ( \ cmd3 & cmd4 & )
或者所有內容都必須在一行中強制執行?
#!/bin/bash (cmd1 & cmd2 &);(cmd3 & cmd4 &)
還是到處使用繼續行字元?
#!/bin/bash ( \ cmd1 & \ cmd2 &); \ ( \ cmd3 & \ cmd4 & )
只需使用
&
和wait
cmd1 & cmd2 & wait cmd3 & cmd4 & wait
wait 將等待 backgroup 程序。
至於續行,只需使用
(
and)
,請注意這僅在您有重定向時才有用。( cmd1 & cmd2 & wait ) > some-log.A ( cmd3 & cmd4 & wait ) > some-log.B
請注意,沒有
wait
, subshell 將立即返回。date ; ( > sleep 20 & > sleep 10 & > ) ; date Wed Nov 29 16:08:15 CET 2017 Wed Nov 29 16:08:15 CET 2017
相比
date ; ( > sleep 20 & > sleep 10 & > wait > ) ; date Wed Nov 29 16:10:08 CET 2017 Wed Nov 29 16:10:28 CET 2017