# Wait 組込みコマンド

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

## 構文

- `wait [ジョブ…]`

## 説明

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

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

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

## オペランド

ジョブ

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

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

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

## 終了ステータス

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

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

## 補足

Wait コマンドは準特殊組込みコマンドです。

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