(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 ).