Nel nostro articolo introduttivo a bash, abbiamo appreso che un file di script di shell contiene un elenco di comandi che devono essere eseguiti dall'interprete di shell. In questo articolo esaminiamo i comandi della shell e i suoi interni.
Un comando è una sequenza di parole. La prima parola indica il comando da eseguire e le parole rimanenti vengono passate come argomenti, dove gli argomenti potrebbero essere le opzioni o i parametri del comando.
Alcuni dei comandi Unix comuni che esegui alla riga di comando sono comandi di shell. Ad esempio, comando ls, lpr e grep.
$ ls -alF $ lpr filename $ grep "string" filename
Stato uscita comando shell
Il valore di ritorno di un comando è il suo stato di uscita, oppure 128 + N se il comando è terminato dal segnale N. Lo stato di uscita serve per verificare il risultato (buon fine/fallimento) dell'esecuzione del comando. Se lo stato di uscita è zero, il comando ha esito positivo. Se il comando non riesce, lo stato di uscita sarà diverso da zero.
Valore di uscita | Stato di uscita |
---|---|
0 (Zero) | Successo |
Diverso da zero | Fallimento |
2 | Uso errato |
127 | Comando non trovato |
126 | Non è un eseguibile |
$? Variabile shell
Il nome della variabile della shell $? è una speciale variabile incorporata che ha lo stato di uscita dell'ultimo comando eseguito.
- Dopo l'esecuzione della funzione di shell, $? restituisce lo stato di uscita dell'ultimo comando eseguito in una funzione.
- Dopo l'esecuzione dello script di shell, $? restituisce lo stato di uscita dell'ultimo comando eseguito nello script.
Script di esempio della shell che spiega lo stato di uscita del comando della shell
Il seguente script di shell exitstatus.sh mostra esempi di vari stati di uscita dei comandi di shell.
$ cat exitstatus.sh #! /bin/bash echo -e "Successful execution" echo -e "=====================" echo "hello world" # Exit status returns 0, because the above command is a success. echo "Exit status" $? echo -e "Incorrect usage" echo -e "=====================" ls --option # Incorrect usage, so exit status will be 2. echo "Exit status" $? echo -e "Command Not found" echo -e "=====================" bashscript # Exit status returns 127, because bashscript command not found echo "Exit status" $? echo -e "Command is not an executable" echo -e "=============================" ls -l execution.sh ./execution.sh # Exit status returns 126, because its not an executable. echo "Exit status" $?
Ora, esegui exitstatus.sh sopra per vedere le varie statue di uscita fornite dallo script di shell di esempio.
$ bash exitstatus.sh Successful execution ===================== hello world Exit status 0 Incorrect usage ===================== ls: unrecognized option `--option' Try `ls --help' for more information. Exit status 2 Command Not found ===================== exitstaus.sh: line 15: bashscript: command not found Exit status 127 Command is not an executable ============================= -rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh exitstatus.sh: line 21: ./execution.sh: Permission denied Exit status 126
Nota:il controllo del valore di ritorno di una funzione o di un comando è una delle principali responsabilità di un programmatore. Questa dovrebbe diventare la tua seconda natura durante la scrittura di codice.