2012-04-05 18 views
14

Eventuali duplicati:
What does “$?” give us exactly in a shell script?

Cosa significa $? in uno script bash? Esempio di seguito:

#!/bin/bash 
# userlist.sh 

PASSWORD_FILE=/etc/passwd 
n=1   # User number 

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE") 

do 
    echo "USER #$n = $name" 
    let "n += 1" 
done 

exit $? 
+1

Lo stato di ritorno/uscita del comando eseguito più recentemente. –

+1

Ah scusa per il duplicato. "$?" è difficile da cercare. – Meekohi

risposta

17
$? 

è l'ultimo errore (o di successo) ha restituito:

$? 
1: command not found. 
echo $? 
127 

false 
echo $? 
1 

true 
echo $? 
0 

L'uscita alla fine:

exit $? 

è superfluo, perché lo script bash uscirà comunque con quello stato. Citando la pagina man:

Lo stato di uscita di Bash è lo stato di uscita dell'ultimo comando eseguito nello script.

+0

Grazie per aver aggiunto che l'uscita $? è superfluo – trueCamelType