¿Cómo detener el shell principal local cuando se produjo un error en el script del shell remoto?

¿Cómo detener el shell principal local cuando se produjo un error en el script del shell remoto?

Estoy intentando ejecutar un script de shell en un servidor remoto con mi script de shell local.
Y tengo que detener mi script de shell local cuando se produjo un error en el script de shell remoto.

Estoy ejecutando el script de shell remoto a través de ssh de esta manera.

##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

El problema es que cuando remote_shell.sh sale con 1, pero el shell principal no se detiene.

Probé este script en local (sin ssh) y el padre se detiene como esperaba.
¿Este problema está relacionado con la tercera línea ';' ¿operador?
(Tengo que eliminar el archivo remoto_shell.sh independientemente del error).

Por supuesto que puedo lograr esto con algún código If Else, pero quiero hacerlo simple.

Respuesta1

Usar

ssh ${host} '${path}/remote_shell.sh'

O

ssh ${host} '${path}/remote_shell.sh ; R=$?; rm ${path}/remote_shell.sh; exit $R'

O alguna otra forma de conservar el código de salida.

información relacionada