Bash - 古いスクリプトが成功した場合は1つのスクリプトを実行し、それ以外の場合は別のスクリプトを実行しますか?

Bash - 古いスクリプトが成功した場合は1つのスクリプトを実行し、それ以外の場合は別のスクリプトを実行しますか?

私の問題は次のようなものだと思います。これしかし、追加のステップがあります。 3つのスクリプトがあるとしましょう。

  1. メインスクリプト.sh
  2. 成功報告.sh
  3. 失敗報告.sh

次のように擬似コードをどのように書くことができますか?

if (main_script.sh finished without error):
run report_success.sh
else:
run report_failure.sh

ありがとうございます!

答え1

if main_script.sh; then
    report_success.sh
else
    report_failure.sh
fi

これは終了ステータスを使用してmain_script.sh成功(終了ステータス0)または失敗(終了ステータスが0ではない)を確認し、適切なレポートスクリプトを実行します。

答え2

main_script.shシステムがかなり標準的で成功した実行と失敗した実行の両方のテストに合格したと仮定すると、次のように状態を調べる0ことができます。1$?

./main_script.sh
if [ $? -eq 0 ]; then
    ./report_success.sh
else
    ./report_failure.sh
fi

答え3

それは簡単です:

true && echo ok || echo fail

false && echo ok || echo fail

一般的なコマンドはnullを返すことができます(例:本物実際には、またはnull以外の値を返すこともできます(例:間違った)ジョブが成功したかどうかによって異なります。

./main_script.sh && ./report_success.sh || ./report_failure.sh

成功または失敗時に複数のコマンドを実行する必要がある場合は、中かっこを使用してください。複数のスクリプトは必要ありません。

./main_script.sh && { echo ok ; echo ok2 } || { echo fail ; echo fail2 ; }

関連情報