GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa significa echo $? fare?

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 ottenuto 127 questo è lo stato di uscita dell'ultimo comando eseguito terminato con qualche errore (molto probabilmente). I comandi in caso di completamento riuscito escono con uno stato di uscita di 0 (molto probabilmente). L'ultimo comando ha dato come output 0 dal echo $v sulla riga precedente terminato 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 0 .

false
echo $?

Otterrai 1 .

L'true command non fa nulla, termina solo con un codice di stato 0; e il false Anche il comando non fa nulla, esce semplicemente con un codice di stato che indica un errore (cioè con il codice di stato 1 ).


$? è utile negli shellscript come modo per decidere cosa fare a seconda di come ha funzionato il comando precedente (controllando lo stato di uscita). Possiamo aspettarci che lo stato di uscita sia 0 quando il comando precedente ha funzionato (è terminato con successo), altrimenti un valore numerico diverso da zero.

Esempio dimostrativo:

#!/bin/bash

patience=3

read -t "$patience" -p "Press 'Enter' if you run Unix or Linux, otherwise press 'ctrl+d' "

status="$?"

if [[ $status -eq 0 ]]
then
 echo "That's great :-)"
elif [[ $status -eq 1 ]]
then
 echo "(exit status=$status)
You are welcome to try Unix or Linux :-)"
else
 echo "(exit status=$status)
You did not answer within $patience seconds. Anyway :-)"
fi
echo "'Unix & Linux' is a question/answer web site for
Unix and Linux operating systems"

Potresti chiedere come eseguire uno shellscript bash senza Unix o Linux;-)


Linux
  1. Cosa fa Eco $? Fare??

  2. Cosa fa Bamfdaemon?

  3. Cosa fa poll() con un timeout pari a 0?

  4. Cosa restituisce malloc(0)?

  5. Origine di un thread kworker

Cosa fa effettivamente Libgl_always_indirect=1?

Cosa fa . ~/.bashrc Comando Fare??

Cosa significa 'cd-'?

Cosa fa 'bash -c'?

Cosa fa -e in un bash shebang?

Cosa fa kill -- -0?