Como parar o shell pai local quando ocorreu um erro no script de shell remoto?

Como parar o shell pai local quando ocorreu um erro no script de shell remoto?

Estou tentando executar o shell script em um servidor remoto com meu shell script local.
E eu tenho que parar meu script de shell local quando ocorreu um erro no script de shell remoto.

Estou executando o script de shell remoto via ssh assim.

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

O problema é que quando remote_shell.sh sai com 1, mas o shell pai não para.

Eu tentei esse script no local (sem ssh) e o pai parou como eu esperava.
Este problema está relacionado à terceira linha ';' operador?
(Tenho que remover o arquivo remote_shell.sh independentemente da falha.)

É claro que posso conseguir isso com algum código If Else, mas quero simplificar.

Responder1

Usar

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

Ou

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

Ou alguma outra forma de preservar o código de saída

informação relacionada