1. ホーム
  2. bash

[解決済み] Bash & (アンパサンド) 演算子

2022-03-15 09:27:38

質問

bashシェルで3つのコマンドを並列に実行しようとしています。

$ (first command) & (second command) & (third command) & wait

この場合の問題点は、もし first command が失敗した場合、例えば終了コードが 0 (推測するに wait が成功する)。

望ましい動作は、いずれかのコマンドが失敗した場合、終了コードが0以外になることです(理想的には、実行中の他のコマンドが停止されることです)。

どうしたら実現できるでしょうか?

コマンドを並列に実行したいので、注意してください

どのように解決するのですか?

がベストだと思います。

first & p1=$!
second & p2=$!
...

wait $p1 && wait $p2 && ..

または

wait $p1 || ( kill $p2 $p3 && exit 1 )
...

しかし、これでもプロセスのチェックには順序があるため、3番目のプロセスがすぐに失敗しても、1番目と2番目のプロセスが終了するまでそれに気づくことはありません。