【问题标题】:How to exit from shell script if any of the command in SSH returns non-zero value如果 SSH 中的任何命令返回非零值,如何退出 shell 脚本
【发布时间】:2016-10-14 15:42:30
【问题描述】:

我有一个带有以下 ssh 命令的 shell 脚本来执行一些操作,

$SSH $user@$remoteIpAddress "sudo rm -rf $remoteLocation/xxx/*; cd $remoteLocation/yyy; .... ... "

目录 $remoteLocation/yyy 不可用,它会显示错误,

./test.sh: line 6: cd: /opt/test/yyy: No such file or directory

它正在进入下一行。如果 ssh 中的任何命令返回非零值,我的方案是退出 shell 脚本本身。我可以添加 set -e 以退出 shell,但我不确定如何在 ssh 中处理它。提前致谢。

编辑:

我在 SSH 命令下面有几行命令。我需要一个解决方案来完全退出脚本,而不是执行 ssh 命令下面的任何行。

【问题讨论】:

    标签: linux bash shell ssh


    【解决方案1】:

    请记住,您的set -e 想法同样适用于您在另一端使用 ssh 打开的 shell。所以你可以在你的 ssh 命令前面加上它,以确保错误终止 ssh 会话:

    $SSH $user@$remoteIpAddress "set -e; sudo rm -rf $remoteLocation/xxx/*; cd $remoteLocation/yyy; .... ... "
    

    然后,一旦遇到错误,ssh shell 就会以非零错误代码退出,如果您的脚本中早先有 set -e,您的脚本也会退出。

    【讨论】:

    • 谢谢@spinup。似乎很简单,而且效果很好
    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 2013-03-01
    • 2015-09-05
    • 2017-07-02
    • 2019-11-28
    • 2019-03-24
    • 2017-08-15
    相关资源
    最近更新 更多