Il comando incorporato exit
esce dalla shell (dal riferimento di Bash ):
exit [n]
Esci dalla shell, restituendo lo stato n al genitore della shell. Se n viene omesso, lo stato di uscita è quello dell'ultimo comando eseguito. Qualsiasi trap su EXIT viene eseguito prima che la shell termini.
Anche l'esecuzione in esecuzione alla fine del file viene restituita, restituendo il codice di ritorno dell'ultimo comando, quindi sì, un finale exit 0
farà uscire lo script con lo stato corretto indipendentemente dallo stato di uscita dei comandi precedenti. (Cioè, supponendo che lo script raggiunga il finale exit
.) Alla fine di uno script puoi anche usare true
o :
per ottenere un codice di uscita pari a zero.
Naturalmente più spesso useresti exit
dall'interno e if
per terminare la sceneggiatura nel mezzo.
Dovrebbero stampare un 1 ( $?
contiene il codice di uscita restituito dal comando precedente):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Mentre questo dovrebbe stampare uno 0:
sh -c "false; exit 0" ; echo $?
Non sono sicuro che il concetto dello script "fallisca" quando si esegue un exit
senso ha senso, poiché è del tutto possibile che alcuni comandi eseguiti dallo script falliscano, ma lo script stesso ha esito positivo. Sta all'autore della sceneggiatura decidere cosa è successo e cosa no.
Inoltre, l'intervallo standard per i codici di uscita è 0..255. I codici sopra 127 sono usati dalla shell per indicare un processo terminato da un segnale, ma possono essere restituiti nel solito modo. La wait
chiamata di sistema in realtà restituisce un valore più ampio, con il resto contenente bit di stato impostati dal sistema operativo.
exit 0
, uscirà con il codice di uscita 0 indipendentemente da ciò che accade all'interno dello script.