Bash - 当上一个脚本成功时运行一个脚本,否则运行另一个脚本?

Bash - 当上一个脚本成功时运行一个脚本,否则运行另一个脚本?

我认为我的问题类似于这个但还有一个额外的步骤 - 假设我有 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)或失败(退出状态非零),然后运行相应的报告脚本。

答案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 ; }

相关内容