Come uscire da tutti gli script di chiamata in bash?
Domanda
Diciamo che ho i seguenti script
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
Quando si esegue b.sh, lo voglio per uscire se a.sh terminato. Come posso fare questo?
(l'uscita di corrente è
in b
in a
oops
in b 2
E non è quello che voglio) |
Grazie, Rivka
Soluzione
Stato controllo ritorno di un comando, variabile corrispondente è $?
.
In alternativa, è possibile corto circuito utilizzando command || exit
Altri suggerimenti
echo in b
./a.sh && echo in b 2
Questa verifica in sostanza che il primo script non uscita diverso da zero. Se questo è vero, e solo allora potrà gestirlo la seconda funzione.
Non credo ci sia un modo per farlo senza verificare in modo esplicito lo stato di ritorno del subshell, per esempio:.
# 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 $?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow