Loading article…
Unixシェルでは、これはバックグラウンドプロセスの実行が終了するまで一時停止するコマンドwaitです。
待ってください[ n... ]ここで、n...は現在実行中のバックグラウンドプロセス(ジョブ)のPIDまたはジョブIDのリストです。IDが指定されていない場合、コマンドは呼び出し元のシェルが認識しているすべてのジョブが終了するまで待機します。
wait関数は通常、最後に終了したジョブの終了ステータスを返します。また、 nに存在しないジョブが指定された場合は127を、待機するジョブがなかった場合は0を返すことがあります。
wait現在のシェル実行環境のジョブテーブルを認識する必要があるため。POSIX仕様では、シェル組み込みコマンドであることが求められています。[ 1 ]
このコマンドは、スクリプトの一部を並列実行して、次のセクションが前のセクションの正常な完了に依存するようなバリアを実装する場合に役立ちます。
次の例では、rsyncを使用してionaという名前のマシンからsrc/ディレクトリを取得し、同時にこのプログラムが依存するライブラリを更新してから、組み合わせをビルドします。
#!/usr/bin/env bash# waitコマンドを使用する並列更新スクリプト# ローカルコピーを更新 rsync iona:src/ . & # 必要なライブラリをアップグレードするか、何らかの理由でmakeが失敗した場合は失敗を示して終了する make -C lib || exit 1# rsyncが終了するまで待機し(既に終了している可能性あり)、ジョブを完了する待機 作る 指定されたジョブ制御ID番号を待機します。
$ ls -R / > /dev/null 2 > & 1 & # 長時間実行されるバックグラウンドプロセスを開始します[ 2 ] 1986 $ wait %2 # バックグラウンドジョブ番号 2 が終了するまで待機し、その後戻りますwaitGNU bashコマンドのリファレンス マニュアル