我认为我的问题类似于这个但还有一个额外的步骤 - 假设我有 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)或失败(退出状态非零),然后运行相应的报告脚本。
答案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(如真的确实)或者可能返回非空(如错误的)取决于操作是成功还是失败。
./main_script.sh && ./report_success.sh || ./report_failure.sh
如果您必须针对成功或失败情况运行多个命令,请使用大括号。不需要多个脚本:
./main_script.sh && { echo ok ; echo ok2 } || { echo fail ; echo fail2 ; }