Comment sortir tous les scripts d'appel en bash?
Question
Disons que je les scripts suivants
a.sh
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
Lors de l'exécution b.sh, je le veux pour quitter si a.sh est sortie. Comment puis-je faire?
(Le courant de sortie est
in b
in a
oops
in b 2
Et ce n'est pas ce que je veux)
Merci, Rivka
La solution
statut contrôle de retour d'une commande, la variable correspondante est $?
.
Vous pouvez court-circuit à l'aide command || exit
Autres conseils
echo in b
./a.sh && echo in b 2
vérifie essentiellement que le premier script ne sort pas non nul. Si cela est vrai, et alors seulement l'exécuter la deuxième fonction.
Je ne pense pas qu'il y ait une façon que vous pouvez le faire sans vérifier explicitement l'état de retour du sous-shell, par exemple:.
# 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 $?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow