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

War es hilfreich?

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
scroll top