GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa sono i codici di uscita Bash in Linux

Cos'è un codice di uscita

Ogni script, comando o binario esce con un codice di ritorno. Puoi vedere questo valore nella variabile speciale $? . I codici di ritorno sono numerici e sono limitati a essere compresi tra 0 e 255 perché viene utilizzato un intero a 8 bit senza segno. Se si utilizza un valore di -1, restituirà 255. Ogni esecuzione termina con un codice di uscita, riuscito o meno, con un messaggio di errore o silenziosamente. Ad esempio:

$ date ; echo $?
Sat Jan 18 08:06:07 IST 2020
0

Come puoi vedere, il codice di uscita è 0 perché il comando è stato eseguito senza problemi. Ora, proviamo questo:

$ wrngcmd ; echo $?
-bash: wrngcmd: command not found
127

È un comando non trovato poiché abbiamo appena digitato un gruppo di caratteri insignificanti.

Codici di uscita Bash riservati

Così simile al codice di uscita "0" che denota il successo del comando, bash ha alcuni codici di uscita riservati per diverse situazioni. Quindi, idealmente, se stai utilizzando il comando di uscita in uno script e devi specificare un codice di uscita, non utilizzare questi codici di uscita riservati poiché potrebbero creare risultati contrastanti.

Numero codice uscita Significato Esempio Commenti
1 Catchall per errori generali lascia che “var1 =1/0” Errori vari, come "dividere per zero" e altre operazioni non consentite
2 Uso improprio degli interni della shell funzione_vuota() {} Parola chiave o comando mancante
126 Il comando invocato non può essere eseguito /dev/null Il problema o il comando di autorizzazione non è un eseguibile
127 "comando non trovato" comando_illegale Possibile problema con $PATH o un errore di battitura
128 Argomento non valido per uscire uscita 3.14159 exit richiede solo argomenti interi nell'intervallo 0 – 255 (vedi prima nota a piè di pagina)
128 +n Segnale di errore irreversibile “n” uccidi -9 $PPID di script $? restituisce 137 (128 + 9)
130 Script terminato da Control-C Ctrl-C Control-C è il segnale di errore fatale 2, (130 =128 + 2, vedi sopra)
255* Stato di uscita fuori intervallo uscita -1 exit richiede solo argomenti interi nell'intervallo 0 – 255

Comprendiamo il codice di uscita “128 +n” con un esempio. Esegui il ciclo infinito come mostrato di seguito:

#!/bin/bash    
while true; do    
echo ${$}    
done

Se esegui questo script, stamperà lo stesso PID indefinitamente fino a quando non lo ucciderai o eseguirai "CTRL+C". Proviamo a fare un "CTRL+C" e vediamo qual è il codice di uscita.

# sh test.sh
....
2582
2582
2582
2582
2582
2582
^C
geeklab$ echo $?
130

Come puoi vedere il codice di uscita è "128+2" cioè 130. Allo stesso modo se uccidiamo lo script usando "kill -9" il codice di uscita dovrebbe essere "128+9" cioè 137. Vediamo anche un esempio di questo:

# sh test.sh
....
2582
2582
2582
...
# kill -9 [pid_of_script]
....
2602
2602
Killed: 9
geeklab$ echo $?
137


Linux
  1. Codici di uscita della riga di comando di Bash demistificati

  2. Come cercare i codici di uscita per le applicazioni?

  3. Quali sono i separatori di parole Readline?

  4. Cosa sono le pagine sporche in Linux

  5. Quali sono i tipi di server dei nomi DNS in Linux

Comando di uscita Bash e codici di uscita

Cosa sono gli inode in Linux?

Codice di uscita dall'assegnazione della variabile alla sostituzione dei comandi in Bash

Codice di ritorno grep di Linux

Cosa dovrebbe fare il comando export in Linux?

Quali applicazioni di editing video sono disponibili in Linux?