
1つのコマンドでバックグラウンドで複数のプログラムを実行するには?
次のコマンドを試しましたが、機能しません。
nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'
nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
答え1
シェル構文の観点から見ると、&
/ / ...のようなコマンドを区別します(もちろん意味論は異なりますが)。だからこれはただ:;
|
&&
cmd1 & cmd2 & cmd3 &
答え2
bash マンページセクションのタイトルは次のとおりです。複合コマンド使用可能なオプションには、listコマンドとgroupコマンドの2つがあります。
グループコマンドは、中かっこで囲まれた一連のコマンドです{}
。リストは同じで括弧で囲まれています()
。どちらも複数のコマンドを背景に設定し、最後にコレクション全体を1つに設定するために使用できます。リスト構成はサブシェルでコマンドを実行するため、変数の割り当ては維持されません。
一連のコマンドを実行します。
{ command1 & command2 & } &
リスト(サブシェル)からコマンドを実行することもできます。
( command1 & command2 ) &
答え3
他の方法:
$(command1 &) && command2 &