繁体   English   中英

Shell 脚本最终阻塞

[英]Shell script finally block

我有一个 shell 脚本,其中有 3 个命令。 如果第一个命令成功,我想执行第二个命令,这可以使用command1 && command2来完成,如果发生任何错误,我想command2以非零代码退出。 我也想在command2成功或失败的任何情况下执行command3

到目前为止已经这样做了:

#!/bin/bash

(command1 && command2)

command3

Command2是不想在分离模式下执行的 docker 组合命令。

如何才能做到这一点?

无论返回哪个退出代码,要一个接一个地运行命令,请尝试:

command1 && command2 ; command3

另一种方式,请记住,您希望在command2失败时检索非零退出代码,但仍保持脚本运行:

#!/bin/bash

set +e

command1

if [ $? -eq 0 ]; then
  command2 2>&1 || echo "command2 failed with $? exit code"
fi

command3

hads0m 是在正确的轨道上。

#!/bin/bash

set +e

command1
result=$?
if [ $result -eq 0 ]; then
  command2
fi

command3
if [ $result -ne 0 ]; then
  echo "command1 failed." >&2
  exit $result
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM