Wie stoppt man die lokale übergeordnete Shell, wenn im Remote-Shell-Skript ein Fehler aufgetreten ist?

Wie stoppt man die lokale übergeordnete Shell, wenn im Remote-Shell-Skript ein Fehler aufgetreten ist?

Ich versuche, mit meinem lokalen Shell-Skript ein Shell-Skript auf einem Remote-Server auszuführen.
Und ich muss mein lokales Shell-Skript stoppen, wenn im Remote-Shell-Skript ein Fehler auftritt.

Ich führe das Remote-Shell-Skript über SSH wie folgt aus.

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

Das Problem besteht darin, dass remote_shell.sh mit 1 beendet wird, die übergeordnete Shell jedoch nicht gestoppt wird.

Ich habe dieses Skript lokal (ohne SSH) ausprobiert und das übergeordnete Skript wird wie erwartet beendet.
Hängt dieses Problem mit dem Operator ';' in der dritten Zeile zusammen?
(Ich muss die Datei remote_shell.sh ungeachtet des Fehlers entfernen.)

Natürlich kann ich dies mit etwas If-Else-Code erreichen, aber ich möchte es einfach machen.

Antwort1

Verwenden

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

Oder

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

Oder eine andere Möglichkeit, den Exit-Code beizubehalten

verwandte Informationen