원격 쉘 스크립트에서 오류가 발생한 경우 로컬 상위 쉘을 중지하는 방법은 무엇입니까?

원격 쉘 스크립트에서 오류가 발생한 경우 로컬 상위 쉘을 중지하는 방법은 무엇입니까?

내 로컬 쉘 스크립트를 사용하여 원격 서버에서 쉘 스크립트를 실행하려고 합니다.
그리고 원격 쉘 스크립트에서 오류가 발생하면 로컬 쉘 스크립트를 중지해야 합니다.

이와 같이 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 없이 로컬에서 이 스크립트를 시도했는데 예상대로 부모가 중지되었습니다.
이 문제는 세 번째 줄 ';'과 관련이 있습니까? 운영자?
(실패하더라도 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'

또는 종료 코드를 보존하는 다른 방법

관련 정보