リモートシェルスクリプトでエラーが発生した場合は、ローカル親シェルを停止する方法は?

リモートシェルスクリプトでエラーが発生した場合は、ローカル親シェルを停止する方法は?

ローカルシェルスクリプトを使用してリモートサーバーでシェルスクリプトを実行しようとしています。
リモートシェルスクリプトでエラーが発生した場合は、ローカルシェルスクリプトを停止する必要があります。

以下のようにSSH経由でリモートシェルスクリプトを実行しています。

##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で終了したときに親シェルが停止しないことです。

このスクリプトをSSHなしでローカルで試しましたが、予想どおり親プロセスが停止しました。
この問題は、3行目「;」に関連していますか?オペレーター?
(失敗に関係なく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'

または終了コードを保存する他の方法

おすすめ記事