Wie beende ich alle aufrufenden Skripte in Bash?
Frage
Nehmen wir an, ich habe die folgenden Skripte
Asche
echo in a
if test 1 -ne 2; then
echo oops
exit 1
fi
B.Sh
echo in b
./a.sh
echo in b 2
Beim Laufen von B.SH möchte ich, dass es beendet wird, wenn A.SH ausgeht. Wie mache ich das?
(Der aktuelle Ausgang ist
in b
in a
oops
in b 2
Und das ist nicht das, was ich will)
Danke, Rivka
Lösung
Überprüfen Sie den Rückgabestatus eines Befehls, entsprechende Variable ist $?
. Alternativ können Sie Kurzschluss verwenden command || exit
Andere Tipps
echo in b
./a.sh && echo in b 2
Dies prüft im Grunde, dass das erste Skript nicht ungleich Null beendet. Wenn das wahr ist und nur dann die zweite Funktion ausführt.
Ich glaube nicht, dass Sie es tun können, ohne den Rückgabebatus der Unterschale ausdrücklich zu überprüfen, z. B.:
# This will run b.sh, and if that exits with a non-zero status, we will also
# exit with that same status; otherwise, we continue.
./b.sh || echo $?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow