私の問題は次のようなものだと思います。これしかし、追加のステップがあります。 3つのスクリプトがあるとしましょう。
- メインスクリプト.sh
- 成功報告.sh
- 失敗報告.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 ; }