Risposte:
$?
si espande allo stato di uscita dell'ultima pipeline in primo piano eseguita. Vedi la sezione Parametri speciali del manuale di Bash .
In termini più semplici, è lo stato di uscita dell'ultimo comando.
La risposta di Cjm è corretta, ma $?
può essere usata in modo sciocco negli script di shell, e vorrei metterti in guardia. Molti script di shell non validi hanno un modello ripetuto di codice:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
Se possibile (problemi di leggibilità a volte intrusi), dovresti codificare questa situazione in modo diverso:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
Quest'ultimo utilizzo è più veloce, non contamina lo spazio dei nomi delle variabili della shell con ciò che equivale a variabili temporanee, spesso può essere molto più leggibile per l'uomo e incoraggia l'uso della "logica positiva", la pratica di scrivere condizionali senza negazioni, che ha cognizioni semplicità nella maggior parte delle situazioni. Elimina $?
gran parte dell'uso di .
Oltre a quanto detto da cjm , se il valore di $?
è 0, il processo precedente è terminato normalmente (o correttamente). Altrimenti si è verificato un errore.
diff
esce con uno 0 se i file confrontati sono uguali, con uno se sono diversi e 2 è un errore.
$?
-Lo stato di uscita dell'ultimo comando eseguito.
$0
-Il nome del file dello script corrente.
$#
-Il numero di argomenti forniti a uno script.
$$
-Il numero di processo della shell corrente. Per gli script di shell, questo è l'ID del processo con cui vengono eseguiti.
$? forniscici lo stato di esecuzione dell'ultimo comando di esecuzione al prompt. Il valore '0' indica che il comando è stato eseguito correttamente e '1' non è riuscito.
$?
determina lo stato di uscita del comando eseguito. $
seguito da numeri (ad es $1
. $2
, ecc.) rappresenta i parametri nello script della shell.