我有一个复杂的脚本,我通常在其中单独测试每个命令是否成功。但是,在某些情况下,我必须执行一系列简单的操作,并且我更愿意从整个序列中获取退出状态,而不必费心单独检查每个命令。
这是我的第一次尝试,使用了一些任意命令:
#!/bin/bash
if ! (
set -e
cd test
touch foo
chown root:root foo)
then
echo "subshell failed"
else
echo "subshell completed"
fi
其set -e
目的是确保在遇到第一次失败时子 shell 会失败退出,但这不起作用。在这种情况下,如果目录test
不存在,脚本只会foo
在当前目录中创建,然后在chown
.
这样做的正确方法是什么?换句话说,只有当所有 3 个命令都完成且没有错误时,才会 echo 'subshell Completed' 吗?