當遠端 ​​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'

或保留退出程式碼的其他方法

相關內容