待機コマンドの終了ステータス値は、指定された最後のオペランドで示されるコマンドによって異なります。プロセスが異常終了すると、終了ステータスは128より大きくなり、他のコマンドの終了ステータス値とは異なります。 待つ コマンドがオペランドなしで呼び出され、現在のシェルがすべてのプロセスIDを認識している場合、コマンドは値0で終了します。 waitコマンドがエラーを検出すると、1から126までの値を返します。最後のプロセスIDが不明な場合、waitコマンドは値127で終了します。Linuxでwaitコマンドを使用する方法をこのチュートリアルに示します。
例-1:複数のプロセスにwaitコマンドを使用する
次のスクリプトを実行した後、2つのプロセスがバックグラウンドで実行され、最初のechoコマンドのプロセスIDが$ process_id変数に格納されます。 $ process_idを指定してwaitコマンドを実行すると、次のコマンドは最初のechoコマンドのタスクが完了するのを待ちます。 2番目の待機コマンドは「 $! ’とこれは、最後に実行されたプロセスのプロセスIDを示します。 ‘ $? ’は、待機コマンドのステータス値を読み取るために使用されます。
#!/ bin / bash
捨てた 'テスト待機コマンド1' &
process_id=$!
捨てた 'テスト待機コマンド2' &
待つ $ process_id
捨てた仕事1ステータスで終了しました$?
待つ $!
捨てた仕事2ステータスで終了しました$?
出力:
$bashwait1.sh
例-2:killコマンドを使用した後にwaitコマンドをテストする
次のスクリプトでは、プロセスの終了後に待機コマンドが実行されます。 sleepコマンドはバックグラウンドプロセスとして実行されており、killコマンドが実行されて実行中のプロセスが終了します。その後、終了したプロセスのプロセスIDを使用してwaitコマンドが実行されます。出力には、終了したプロセスのプロセスIDが表示されます。
#!/ bin / bash捨てた 「待機コマンドのテスト」
寝る 20 &
pid=$!
殺す $ pid
待つ $ pid
捨てた $ pid終了しました。
出力:
$bashwait2.sh
例-3:終了ステータス値を確認します
次のスクリプトでは、関数 チェック() 2つの引数値によって呼び出されます。チュートリアルの冒頭で、waitコマンドが正常に実行された場合、終了値は0になり、waitコマンドがエラーを検出した場合、1〜126の値を返すことが説明されています。スクリプトの実行後、2番目の引数として0を渡した場合value then waitコマンドは正常に終了し、ゼロより大きい値を渡すと、正常に終了しません。
#!/ bin / bash関数チェック(()。
{{
捨てた 「1秒寝る」
寝る $ 1
出口 $ 2
}
チェック$ 1 $ 2 &
NS=$!
捨てた 「ステータスの確認」
待つ $ b && 捨てたわかった|| 捨てたよくない
出力:
$bashwait3.sh3 0$bashwait3.sh3 5
このチュートリアルが、usewaitコマンドを正しく学習するのに役立つことを願っています。 Linuxには、という名前の別のコマンドがあります 寝る 一定の時間待機しますが、これらのコマンドにはいくつかの違いがあります。あなたがについて知りたい場合 スリープコマンド その後、このリンクにアクセスできます。