(2 risposte)
Chiuso 2 anni fa.
Nel mio terminale ha stampato un numero apparentemente casuale 127
. Penso che stia stampando il valore di una variabile e per controllare i miei sospetti, ho definito una nuova variabile v=4
. Esecuzione di echo $?
di nuovo mi ha dato come output.
Sono confuso perché mi aspettavo 4 come risposta.
Risposta accettata:
Da man bash
:
$? Si espande allo stato di uscita della pipeline in primo piano eseguita più di recente.
echo $?
restituirà lo stato di uscita dell'ultimo comando. Hai 127
questo è lo stato di uscita dell'ultimo comando eseguito terminato con qualche errore (molto probabilmente). I comandi al completamento con successo escono con uno stato di uscita di (molto probabilmente). L'ultimo comando ha fornito l'output
poiché
echo $v
sulla riga precedente terminata senza errori.
Se esegui i comandi
v=4
echo $v
echo $?
Otterrai un output come:
4 (from echo $v)
0 (from echo $?)
Prova anche:
true
echo $?
Otterrai .
false
echo $?
Riceverai 1
.
Il true
il comando non fa nulla, esce solo con un codice di stato ; e il
false
anche il comando non fa nulla, esce semplicemente con un codice di stato che indica un errore (cioè con codice di stato 1
).