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

È stato utile?

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