当远程 shell 脚本发生错误时如何停止本地父 shell?

当远程 shell 脚本发生错误时如何停止本地父 shell?

我正在尝试使用本地 shell 脚本在远程服务器上运行 shell 脚本。
当远程 shell 脚本发生错误时,我必须停止本地 shell 脚本。

我正在通过 ssh 运行远程 shell 脚本,如下所示。

##parent shell script##
#!/bin/bash -ex
scp remote_shell.sh ${host}:${path}
ssh ${host} '${path}/remote_shell.sh ; rm ${path}/remote_shell.sh'
..do something
##remote_shell.sh##
#!/bin/bash -ex
..do something
..error occurred
exit 1

问题是,当remote_shell.sh以1退出时,但父shell不会停止。

我在本地(没有 ssh)上尝试了这个脚本,并且父进程按我的预期停止了。
这个问题与第三行“;”有关吗?操作员?
(无论失败,我都必须删除remote_shell.sh文件。)

当然,我可以通过一些 If Else 代码来实现这一点,但我想让它变得简单..

答案1

使用

ssh ${host} '${path}/remote_shell.sh'

或者

ssh ${host} '${path}/remote_shell.sh ; R=$?; rm ${path}/remote_shell.sh; exit $R'

或者保留退出代码的其他方法

相关内容