Der Fehlercode wird in der Variablen `?' gespeichert. Da sie für jedes Kommando neu gesetzt wird, muß sie direkt nach der Kommandoausführung ausgelesen werden. Sie können dies direkt am Prompt nachvollziehen.
ole@enterprise:~/test> cd next bash: cd: next: Datei oder Verzeichnis nicht gefunden ole@enterprise:~/test> echo $? 1 ole@enterprise:~/test> echo $? 0
Bei der ersten Ausgabe wird die fehlerhafte Ausführung des Kommandos cd durch die Zahl 1 angezeigt. Die zweite Ausgabe der Variablen `?' bezieht sich auf den Erfolg des ersten echo Befehls.
Befehle können aus mehreren Gründen sich erfolglos beenden. Viele Befehle besitzen daher auch mehr als einen Fehlercode. Schauen Sie sich doch die Verhaltensweise von grep (7.7.1) einmal an.
ole@enterprise:~/test> grep bash shebang #!/bin/bash ole@enterprise:~/test> echo $? 0 ole@enterprise:~/test> grep tapico shebang ole@enterprise:~/test> echo $? 1 ole@enterprise:~/test> grep bash sheebang grep: sheebang: Datei oder Verzeichnis nicht gefunden ole@enterprise:~/test> echo $? 2
Wenn grep einen oder mehrere Treffer erzielt, dann wird der Fehlercode 0 ausgegeben. Ist der Befehl soweit richtig, aber grep findet keine passende Zeichenkette, dann kommt der Fehlercode 1. Kommt es zu einem richtigen Fehler, wie z. B. einer nichtexistenten Datei, dann wird der Fehlercode 2 zurückgegeben.