我有一个脚本,在其中我会仔细检查返回代码中是否存在错误情况,以便在发生故障时可以提早中止操作。该脚本的一个步骤涉及通过root
和ssh
在另一个盒子上以sudo
用户身份运行命令。
考虑:
ssh $HOST sudo $CMD
echo $?
ssh
将返回代码传递回来也很好,但是即使$CMD
返回非零退出代码,运行命令后sudo
仍然返回0。如何捕获返回码到
$CMD
?我非常喜欢将其作为ssh
的返回代码传递回去,但是如果还有另一种简单的方法不能与$CMD
的输出混淆,那么我非常高兴。
最佳答案
事实证明,sudo
正确传递了返回码。我的测试用例很可能是在随后的执行或条件测试中覆盖$?
。我通常使用一个命名变量来保存$?
以避免此类情况,但是您已经到了。
关于ssh - 从sudo运行过程中捕获退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093721/