我正在尝试使用本地 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'
或者保留退出代码的其他方法