Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
---|---|---|
Indietro | Avanti |
...there are dark corners in the Bourne shell, and people use all of them. | |
Chet Ramey |
Il comando exit può essere usato per terminare uno script, proprio come in un programma in linguaggio C. Può anche restituire un valore disponibile al processo genitore dello script.
Ogni comando restituisce un exit status (talvolta chiamato anche return status ). Un comando che ha avuto successo restituisce 0, mentre, in caso di insuccesso, viene restituito un valore diverso da zero, che solitamente può essere interpretato come un codice d'errore. Comandi, programmi e utility UNIX correttamente eseguiti restituiscono come codice di uscita 0, con significato di successo, sebbene ci possano essere delle eccezioni.
In maniera analoga, sia le funzioni all'interno di uno script che lo script stesso, restituiscono un exit status che nient'altro è se non l'exit status dell'ultimo comando eseguito dalla funzione o dallo script. In uno script, il comando exit nnn può essere utilizzato per inviare l'exit status nnn alla shell (nnn deve essere un numero decimale compreso nell'intervallo 0 - 255).
Quando uno script termina con exit senza alcun parametro, l'exit status dello script è quello dell'ultimo comando eseguito (quello che precede exit).
L'equivalente del solo exit è exit $? o, addirittura, tralasciando semplicemente exit.
|
$?
legge l'exit status dell'ultimo comando
eseguito. Dopo l'esecuzione di una funzione, $?
fornisce l'exit status dell'ultimo comando eseguito nella funzione.
Questo è il modo che Bash ha per consentire alle funzioni di restituire un
"valore di ritorno". Al termine di uno
script, digitando $?
da riga di comando, si
ottiene l'exit status dello script, cioè, dell'ultimo
comando eseguito che, per convenzione, è
0 in caso di successo o un intero
compreso tra 1 e 255 in caso di errore.
Esempio 6-1. exit / exit status
#!/bin/bash echo ciao echo $? # Exit status 0 perché il comando è stato eseguito con successo. lskdf # Comando sconosciuto. echo $? # Exit status diverso da zero perché il comando non ha #+ avuto successo. echo exit 113 # Restituirà 113 alla shell. # Per verificarlo, digitate "echo $?" dopo l'esecuzione dello script. # Convenzionalmente, un 'exit 0' indica successo, #+ mentre un valore diverso significa errore o condizione anomala. |
$? è particolarmente utile per la verifica del risultato di un comando in uno script (vedi Esempio 15-32 e Esempio 15-17).
Il !, l'operatore logico "not", inverte il risultato di una verifica o di un comando e questo si ripercuote sul relativo exit status. Esempio 6-2. Negare una condizione utilizzando !
|
Alcuni codici di exit status hanno significati riservati e non dovrebbero quindi essere usati dall'utente in uno script. |