このままでは、失敗したかどうかに関係なく、次々と実行されます。ある時点で終了するだけで、次のコマンドが実行されます。次から次へと。
前のコマンドがエラーで終了しなかった場合にのみコマンドを実行する場合は、次を使用します:
python do_this_first.py && python do_this_second.py && python do_this_last.py
ここでは、2 つのアンパサンドが論理的な AND
のように機能します。 . 2 番目のスクリプトは、最初のスクリプトが正常に終了した場合にのみ実行され、3 番目のスクリプトは、2 番目のスクリプトがエラーなしで実行された場合にのみ実行されます。エラーが発生した場合、次のコマンドは実行されません。
ただし、それらを並行して実行したい場合は、これを実行できますが、他にも多くのオプションがあります:
python do_this_first.py &
python do_this_second.py &
python do_this_last.py &
bash はシーケンシャルです。最初に do_this_first.py ファイルが解釈されます。 python が実行を終えると、制御は再び bash に移されます。次に、bash は python do_this_second.py などを実行します。
したがって、本質的には、do_this_first が開始して終了し、do_this_second が開始して終了し、次に do_this_last が開始して終了します。
slhck が言ったように、以下は 1 つのオプションです。
python do_this_first.py && python do_this_second.py && python do_this_last.py
または、行がエラー コードを返した場合にすぐに終了する -e を設定することもできます。
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
python do_this_first.py
python do_this_second.py
python do_this_last.py
私にとっては、この最後の方が読みやすいです。