Script-Programmierung

exit-status


Wenn ein Kommando in der bash ausgeführt wurde, gibt es einen 1-Byte-Wert als exit-Status zurück. Dieser exit-Status kann also Werte von 0...255 annehmen und wird in der shell-Variable $? abgelegt. Im Allgemeinen besitzt dieser exit-Status bei der fehlerfreien Ausführung eines Kommandos den Wert 0 (Null). Dieser Wert wird durch die Verzweigungs- und Schleifenbefehle als logisch wahr (true) interpretiert. Sollte der Aufruf eines Kommandos fehlerhaft sein, oder das Kommando einen Fehler erzeugen oder abgebrochen werden, so ist der exit-Status größer als Null. Der genaue Wert gibt oft noch genauere Informationen zur Fehlerursache. Ist der exit-Status größer als Null, so wird das durch die Verzweigungs- und Schleifenbefehle als logisch falsch (false) interpretiert. Das bedeutet, dass die Entscheidungen in den Verzweigungs- und Schleifenbefehlen selbst wieder eigenständige Kommandos sind und kein Bestandteil des Verzweigungs- und Schleifenbefehls selbst. Damit erreicht man eine sehr hohe Flexibilität, da die Verzweigungs- und Sprungbedingungen nicht auf wenige, durch den Verzweigungs- oder Schleifenbefehl vordefinierte Operatoren beschränkt bleibt, da so auch eigene Kommandos und Scripte als Bedingung verwendet werden können. Um Zahlen-, Datei- und Stringtests durchzuführen, gibt es verschiedene interne und externe Kommandos, wie test, [ oder [[ usw. Diese sind ebenfalls eigenständige Kommandos, die mit Hilfe von Vergleichsoperatoren eine Bedingung testen und je nachdem, ob die Bedingung erfüllt ist oder nicht, einen entsprechenden exit-code erzeugen.
Auch ein selbst geschriebenes Shell-Script liefert einen exit-Status an die aufrufende bash zurück. Im Allgemeinen entspricht dieser dem exit-Status des letzten ausgeführten Kommandos. Mit dem Kommando exit [Bytewert] kann man ein Script beenden und einen exit-Status-Wert gezielt übergeben. In Shellfunktionen erreicht man das selbe mit dem Kommando return.