# Wait 組込みコマンド

Wait 組込みコマンドはバックグラウンドの​ジョブが終了するのを待ちます。

## 構文

- `wait [ジョブ…]`

## 説明

Wait コマンドは実行中のバックグラウンドジョブが終了するのを待ちます。​ジョブ制御が有効な時は、ジョブが停止したときも終了したとみなします。

Wait コマンドはジョブ制御が有効でないときでも​非同期コマンドの終了を待つのに使えます。

Wait コマンドの実行中にシェルがシグナルを受信した場合、そのシグナルに対し​トラップが設定してあればそのトラップを直ちに実行し wait コマンドはそのまま終了します。またジョブ制御が有効な場合、シェルが SIGINT シグナルを受信すると wait コマンドは中断されます。

シェルが​対話モードで、​ジョブ制御が有効で、非 POSIX 準拠モードのとき、ジョブが終了または停止した時にジョブの状態を出力します。

## オペランド

ジョブ

  終了を待つジョブ・非同期コマンドの​ジョブ ID またはプロセス ID です。

ジョブを何も指定しないとシェルが有する全てのジョブ・非同期コマンドの終了を待ちます。

存在しないジョブ・非同期コマンドを指定すると、終了ステータス 127 で既に終了したジョブを指定したものとみなし、エラーにはしません。

## 終了ステータス

ジョブが一つも与えられておらず、シェルが全てのジョブ・非同期コマンドの終了を正しく待つことができた場合、終了ステータスは 0 です。ジョブが一つ以上与えられているときは、最後のジョブの終了ステータスが wait コマンドの終了ステータスになります。

Wait コマンドがシグナルによって中断された場合、終了ステータスはそのシグナルを表す 128 以上の整数です。その他の理由で wait コマンドがジョブの終了を正しく待つことができなかった場合、終了ステータスは 1 以上 126 以下です。

## 補足

Wait コマンドは​必須組込みコマンドです。

非同期コマンドのプロセス ID は非同期コマンドを実行した直後に​特殊パラメータ `!` の値を見ることで知ることができます。ジョブ制御が有効なときは jobs コマンドでプロセス ID を調べることもできます。