In questa guida, controlla come controllare il codice di uscita bash dell'ultimo comando e alcuni possibili usi di esso.
Codice di uscita Bash
Ogni comando unix/linux eseguito dallo script shell o utente lascia uno stato di uscita. È un numero intero che rimane invariato a meno che non venga eseguito il comando successivo. Se il codice di uscita è 0, il comando ha avuto successo. Se il codice di uscita è diverso da zero (1-255), allora significa un errore.
Ci sono molti potenziali usi del codice di uscita bash. Il più ovvio è, ovviamente, verificare se l'ultimo comando viene eseguito correttamente, specialmente se il comando non genera alcun output.
Nel caso di Bash, il codice di uscita del comando precedente è accessibile utilizzando la variabile shell “$?".
Controllo del codice di uscita bash
Avvia un terminale ed esegui qualsiasi comando.
$ data
Controlla il valore della variabile shell “$?"Per il codice di uscita.
$ echo $?
Poiché il comando "Data" è stato eseguito correttamente, il codice di uscita è 0. Cosa succederebbe se ci fosse un errore?
Proviamo a eseguire un comando che non esiste.
$ ABCD
Controlla il codice di uscita.
$ echo $?
È un valore diverso da zero, indicando che il comando precedente non è stato eseguito correttamente.
Ora dai un'occhiata al seguente comando:
$ cat campione.txt | grep "moneta"
Quando si lavora con un comando che ha uno o più tubi, il codice di uscita sarà dell'ultimo codice eseguito nel tubo. In questo caso, è il comando grep.
Poiché il comando grep ha avuto successo, sarà 0.
$ echo $?
In questo esempio, se il comando GREP non riesce, il codice di uscita sarà diverso da zero.
$ cat campione.txt | grep "ABCD"
$ echo $?
Incorporare il codice di uscita negli script
Il codice di uscita può essere utilizzato anche per lo scripting. Un modo semplice per usarlo è assegnandolo a una variabile shell e lavorando con esso. Ecco uno script di shell di esempio che utilizza il codice di uscita come condizione per stampare output specifico.
$ #!/Bin/Bash
$ echo "ciao mondo"
$ status = $?
$ [$ status -eq 0] && echo "comando riuscita" || echo "comando senza successo"
Quando viene eseguito, lo script genererà il seguente output.
Ora, vediamo cosa succede quando c'è un comando non valido da eseguire.
$ #!/Bin/Bash
$ comand casuale
$ status = $?
$ [$ status -eq 0] && echo "comando riuscita" || echo "comando senza successo"
Quando viene eseguito, l'output sarà diverso.
Spiegazione del valore del codice di uscita
Quando il codice di uscita è diverso da zero, il valore varia da 1 a 255. Ora, cosa significa questo valore?
Mentre il valore è limitato, la spiegazione di ciascun valore è univoca per il programma/script. Ad esempio, "LS" e "Grep" hanno spiegazioni diverse per il codice di errore 1 e 2.
$ man ls
$ man grep
Definizione dello stato di uscita nello script
Quando si scrive uno script, possiamo definire i valori del codice di uscita personalizzati. È un metodo utile per il debug più facile. Negli script bash, è il comando "uscita" seguito dal valore del codice di uscita.
$ uscita
Per Convenzione, si consiglia di assegnare il codice di uscita 0 per l'esecuzione riuscita e utilizzare il resto (1-255) per possibili errori. Quando si raggiunge il comando di uscita, l'esecuzione dello script shell verrà terminata, quindi fai attenzione al suo posizionamento.
Dai un'occhiata al seguente script di shell. Qui, se la condizione viene soddisfatta, lo script terminerà con il codice di uscita 0. Se la condizione non è soddisfatta, il codice di uscita sarà 1.
$ #!/Bin/Bash
$ se [["$ (whoami)" != root]]; Poi
$ echo "non root utente."
$ uscita 1
$ fi
$ echo "utente root"
$ EXIT 0
Verifica il risultato dell'esecuzione di questo script senza privilegi sudo o utente "root".
$ ./campione.sh
$ echo $?
Pensieri finali
Questa guida dimostra quali sono i codici di uscita e come puoi usarli. Dimostra anche come assegnare codici di uscita appropriati in uno script bash.
Interessato agli script bash? Uno dei modi più semplici per iniziare è scrivere i tuoi script. Dai un'occhiata a questa semplice guida su come scrivere un semplice script bash.
Felice calcolo!