<Precedenti | Contenuti | Succ.>
Stato di uscita
I comandi (inclusi gli script e le funzioni shell che scriviamo) emettono un valore al sistema quando terminano, chiamato stato di uscitaQuesto valore, che è un numero intero compreso tra 0 e 255, indica il successo o il fallimento dell'esecuzione del comando. Per convenzione, un valore pari a zero indica successo e qualsiasi altro valore indica fallimento. La shell fornisce un parametro che possiamo utilizzare per esaminare lo stato di uscita. Eccolo in azione:
[io@linuxbox~]$ ls -d /usr/bin
/ Usr / bin
[io@linuxbox~]$ eco $?
0
[io@linuxbox~]$ ls -d /bin/usr
ls: impossibile accedere a /bin/usr: nessun file o directory [me@linuxbox ~]$ eco $?
2
[io@linuxbox~]$ ls -d /usr/bin
/ Usr / bin
[io@linuxbox~]$ eco $?
0
[io@linuxbox~]$ ls -d /bin/usr
ls: impossibile accedere a /bin/usr: nessun file o directory [me@linuxbox ~]$ eco $?
2
Stato di uscita
In questo esempio eseguiamo il ls comando due volte. La prima volta, il comando viene eseguito correttamente. Se visualizziamo il valore del parametro $?, vediamo che è zero. Eseguiamo il ls comando una seconda volta (specificando una directory inesistente), producendo un errore, ed esaminare il parametro $? Di nuovo. Questa volta contiene un 2, a indicare che il comando ha riscontrato un errore. Alcuni comandi utilizzano valori di stato di uscita diversi per fornire una diagnosi degli errori, mentre molti comandi terminano semplicemente con il valore XNUMX quando falliscono. Le pagine man spesso includono una sezione intitolata "Stato di uscita", che descrive quali codici vengono utilizzati. Tuttavia, uno zero indica sempre successo.
La shell fornisce due comandi incorporati estremamente semplici che non fanno altro che terminare con uno stato di uscita zero o uno. vero il comando viene sempre eseguito correttamente e il falso il comando viene sempre eseguito senza successo:
[io@linuxbox~]$ vero [io@linuxbox~]$ eco $? 0
[io@linuxbox~]$ falso [io@linuxbox~]$ eco $? 1
[io@linuxbox~]$ vero [io@linuxbox~]$ eco $? 0
[io@linuxbox~]$ falso [io@linuxbox~]$ eco $? 1
Possiamo usare questi comandi per vedere come il if l'affermazione funziona. Cosa if l'istruzione in realtà valuta il successo o il fallimento dei comandi:
[io@linuxbox~]$ se vero; allora echo "È vero."; fi
È vero.
[io@linuxbox~]$ se falso; allora echo "È vero."; fi
[io@linuxbox~]$
[io@linuxbox~]$ se vero; allora echo "È vero."; fi
È vero.
[io@linuxbox~]$ se falso; allora echo "È vero."; fi
[io@linuxbox~]$
Il comando echo "È vero." viene eseguito quando il comando seguente if viene eseguito correttamente e non viene eseguito quando viene eseguito il comando seguente if non viene eseguito correttamente. Se segue un elenco di comandi if, viene valutato l'ultimo comando nell'elenco:
[me@linuxbox ~]$ if false; true; then echo "È vero."; fi È vero.
[me@linuxbox ~]$ se vero; falso; quindi echo "È vero."; fi [me@linuxbox ~]$
[me@linuxbox ~]$ if false; true; then echo "È vero."; fi È vero.
[me@linuxbox ~]$ se vero; falso; quindi echo "È vero."; fi [me@linuxbox ~]$