2つのコマンドを並列に実行しますが、次のコマンドを開始する前に、1つのコマンドが完了するのを待ちます。

2つのコマンドを並列に実行しますが、次のコマンドを開始する前に、1つのコマンドが完了するのを待ちます。

次のプロセスが開始される前に処理を完了する必要があるいくつかのプロセスがバックグラウンドで設定されています。このように設定したが、同時に2つのプログラムを起動する必要があるステップがあり、そのうちの1つだけが完了すると、次のステップが実行されます。次のステップを開始する前に、2番目のプログラムを完了する必要はありません。

プログラム 1 プログラム 2

プログラム3

私が必要とするのは、prog1が完了するとprog3が起動し、prog2が実行され続けることです。可能ですか?私が試したことはすべて、prog3を起動する前にprog2が処理を終了するのを待つことです。

答え1

prog2 & (prog1 ; prog3) &

答え2

prog1 &; pid1=$!; prog2 &; wait $pid1; prog3

関連情報