Sie können Ihr Skript auf diese Weise leicht modifizieren
#!/bin/bash … ./update_artifact1.sh $ARTIFACT_VERSION exit_state_1=$? ./update_artifact2.sh $ARTIFACT_VERSION exit_state_2=$? ./update_artifact3.sh $ARTIFACT_VERSION exit_state_3=$? exit_state_all=$[ $exit_state_1 && $exit_state_2 && $exit_state_3 ] exit $exit_state_all
Hinweis:
- Jeder Befehl gibt einen Beendigungscode zurück, der in
bash
gespeichert wird$?
. Dies ist der0
Fall, wenn kein Fehler vorliegt, oder eine andere Nummer, wenn ein Fehler vorliegt.
Nach jeder Zeile wird der Wert von$?
aktualisiert. Sie müssen also in einer Variablen speichern (in diesem Fall haben wirexit_state_1
... verwendetexit_state_n
).
Am Ende möchten Sie, dass Ihr Skript nur einen Fehlercode mit 0 zurückgibt, wenn alles in Ordnung ist und wir es mit verwirklichen$[ $a || $b || $c ]
.
Beachten Sie, dass$[ 0|| 0 || 0 ]
0 gleich ist,$[ $a || $b || $c ]
wobei mindestens ein Ein$a,$b,$c
nicht gleich0
1 ist. - Es ist wichtig das ! in der ersten Zeile, wenn Sie schreiben müssen
#!/bin/bash
, um dem System mitzuteilen, dass es sich um ein Skript handelt, das in einerbash
Shell ausgeführt werden muss.
Vielleicht finden Sie hier mehr über den Shebang . - Wie auch in einem Kommentar erwähnt
set -e
, wird das Skript beim ersten Fehler unterbrochen, ohne dass die andere Zeile verarbeitet wird, und es wird ein Fehlercode (derjenige des zuletzt ausgeführten Befehls) zurückgegeben, wenn Sie etwas vor diese Zeile einfügen.