如果SSH中的任何命令返回非零值

时间:2016-10-14 15:42:31

标签: linux bash shell ssh

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

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

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

./ test.sh:line 6:cd:/ opt / test / yyy:没有这样的文件或目录

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

编辑:

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

1 个答案:

答案 0 :(得分:1)

请注意,您的set -e提示同样适用于您使用ssh在另一端打开的shell。因此,您可以在其前面添加ssh命令,以确保错误终止ssh会话:

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

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