= Wait 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Wait 組込みコマンド

dfn:[Wait 組込みコマンド]はバックグラウンドのlink:job.html[ジョブ]が終了するのを待ちます。

[[syntax]]
== 構文

- +wait [{{ジョブ}}...]+

[[description]]
== 説明

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

Wait コマンドはジョブ制御が有効でないときでもlink:syntax.html#async[非同期コマンド]の終了を待つのに使えます。

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

[[operands]]
== オペランド

{{ジョブ}}::
終了を待つジョブ・非同期コマンドのlink:job.html#jobid[ジョブ ID] またはプロセス ID です。

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

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

[[exitstatus]]
== 終了ステータス

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

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

[[notes]]
== 補足

Wait コマンドはlink:builtin.html#types[準特殊組込みコマンド]です。

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

// vim: set filetype=asciidoc expandtab:
