Как остановить локальную родительскую оболочку, если в удаленном скрипте оболочки произошла ошибка?

Как остановить локальную родительскую оболочку, если в удаленном скрипте оболочки произошла ошибка?

Я пытаюсь запустить скрипт оболочки на удаленном сервере с помощью моего локального скрипта оболочки.
И мне приходится останавливать мой локальный скрипт оболочки, когда в удаленном скрипте оболочки происходит ошибка.

Я запускаю удаленный скрипт оболочки через 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'

Или какой-то другой способ сохранения кода выхода

Связанный контент