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

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

[[syntax]]
== 構文

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

[[description]]
== 説明

Wait コマンドは実行中のバックグラウンドジョブが終了するのを待ちます。
Wait コマンドはジョブ制御が有効でないときでも{zwsp}link:syntax.html#async[非同期コマンド]の終了を待つのに使えます。

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

シェルが{zwsp}link:interact.html[対話モード]で、{zwsp}link:job.html[ジョブ制御]が有効で、非 link:posix.html[POSIX 準拠モード]のとき、ジョブが終了または停止した時にジョブの状態を出力します。

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

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

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

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

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

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

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

[[notes]]
== 補足

Wait コマンドは{zwsp}link:builtin.html#types[必須組込みコマンド]です。

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

// vim: set filetype=asciidoc expandtab:
