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

Était-ce utile?

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