[英]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.