GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was bedeutet echo $? tun?

Von man bash :

$? Erweitert auf den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline.

echo $? gibt den Exit-Status des letzten Befehls zurück. Du hast $? das ist der Exit-Status des zuletzt ausgeführten Befehls, der mit einem Fehler beendet wurde (höchstwahrscheinlich). Befehle werden nach erfolgreichem Abschluss mit einem Exit-Status von 0 beendet (höchstwahrscheinlich). Der letzte Befehl lieferte die Ausgabe 0 seit echo $v auf der vorherigen Zeile ohne Fehler beendet.

Wenn Sie die Befehle ausführen

v=4
echo $v
echo $?

Sie erhalten die Ausgabe als:

4 (from echo $v)
0 (from echo $?)

Versuchen Sie auch:

true
echo $?

Sie erhalten 0 .

false
echo $?

Sie erhalten 1 .

Die true Befehl tut nichts, er wird nur mit einem Statuscode 0 beendet; und die false Befehl tut auch nichts, er wird nur mit einem Statuscode beendet, der einen Fehler anzeigt (d. h. mit dem Statuscode 1 ).


$? ist in Shellscripts nützlich, um zu entscheiden, was zu tun ist, je nachdem, wie der vorherige Befehl funktioniert hat (Überprüfung des Beendigungsstatus). Wir können erwarten, dass der Exit-Status 0 ist wenn der vorherige Befehl funktioniert hat (erfolgreich beendet wurde), andernfalls ein numerischer Wert ungleich Null.

Demo-Beispiel:

#!/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"

Sie fragen sich vielleicht, wie man ein Bash-Shellscript ohne Unix oder Linux ausführt;-)


Linux
  1. Was macht „lc_all=c“?

  2. Was macht ?

  3. Was bedeutet Exec 3?

  4. Was bedeutet Echo $? Tun??

  5. Was gibt malloc(0) zurück?

Was macht Bamfdaemon?

Was macht poll() mit einem Timeout von 0?

Ursprung eines kworker-Threads

Was macht ulimit -s unlimited?

Was bedeutet set -e in einem Bash-Skript?

Was macht "set -x"?