Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

exit - Shell-Prozedur beenden

&pagelevel(4)&pagelevel

(cause the shell to exit)


Das in die POSIX-Shell sh eingebaute Kommando exit beendet Shell-Prozeduren. Beim Aufruf können Sie mit einer Zahl den Endestatus der entsprechenden Shell-Prozedur festlegen.

Auch ohne Aufruf von exit beenden sich Shell-Prozeduren:

  • wenn das letzte Kommando ausgeführt ist, d.h. wenn die ausführende Shell Datei-Ende (EOF) erkennt. Endestatus ist der Endestatus des zuletzt ausgeführten Kommandos.

  • wenn die ausführende Shell ein Kommando nicht findet oder einen Syntax-Fehler erkennt. Endestatus ist ein Wert <> 0.

Wenn Sie das Kommando exit im Dialog eingeben, wird entweder die aktuelle Shell (auch Subshell) oder die POSIX-Shell beendet.


Syntax


exit[ n]

n

Eine Zahl zwischen 0 und 255. Das ist der Endestatus, mit dem die Shell-Prozedur beendet wird.
Wurde n gesetzt, aber der Wert liegt nicht zwischen 0 und 255, so ist der Endestatus undefiniert.

Wie auch in anderen Abschnitten beschrieben wird, sind bestimmte Werte für den Endestatus für besondere Zwecke reserviert. Sie dürfen von Anwendungen auch nur für diese Zwecke verwendet werden:


126:Es wurde ein auszuführendes Kommando gefunden, aber die Datei war keine ausführbare Datei.
127:Es wurde kein auszuführendes Kommando gefunden.
>128:Ein Kommano wurde durch ein Signal unterbrochen.


trap für EXIT wird ausgeführt, bevor sich die Shell beendet. Dies ist nur dann nicht der Fall, wenn exit selbst in diesem trap aufgerufen wurde. In diesem zweiten Fall wird die Shell sofort beendet.

Mit dem Kommando echo $? können Sie den Endestatus abfragen.

n nicht angegeben:
Endestatus ist der Endestatus des Kommandos, das vor dem Aufruf von exit ausgeführt wurde.

Endestatus

Wenn der Endestatus gesetzt wird, ist er n. Andernfalls ist der Endestatus der Endestatus des zuletzt ausgeführten Kommandos bzw. Null, wenn kein Kommando ausgeführt worden ist. Wenn exit im Rahmen eines trap ausgeführt wird, wird als zuletzt ausgeführtes Kommando das Kommando angenommen, das unmittelbar vor Ausführung des trap ausgeführt wurde.

Beispiel 1

Das Kommando false lässt sich durch folgende Shell-Prozedur realisieren:

: Shell-Version des Kommandos false
: Endestatus immer 1
exit 1

Beispiel 2

Die beiden Shell-Prozeduren ende und abfrage sollen zeigen, wie der Endestatus ausgewertet werden kann:

Die Datei ende hat folgenden Inhalt:

: Aufruf mit sh ende datei
if [ -f "$1" ]
then exit 2
elif [ -d "$1" ]
then exit 3
else exit 4
fi

Die Datei abfrage hat folgenden Inhalt:

: Aufruf mit sh abfrage datei
sh ende "$1"
case $? in
     2) echo Inhalt der Datei $1:; cat $1;;
     3) echo Inhalt von $1:; ls -l $1 
     4) echo Die Eingabe $1 hat fuer diese Prozedur keinen Sinn!
esac

Die Shell-Prozedur abfrage wird gestartet:

$ sh abfrage $HOME/.profile

Inhalt der Datei .profile:

HOME=/home1/rosa/src

export HOME

...

Die Shell-Prozedur abfrage ruft die Prozedur ende auf. Diese Prozedur liefert als Endestatus den Wert 2 zurück, da .profile eine einfache Datei ist. Anschließend werden in der case-Anweisung die Kommandos ausgeführt, die bei dem entsprechenden Muster 2 angegeben sind.

Den Inhalt dieser beiden Shell-Prozeduren kann man nicht ohne weiteres in eine einzige Datei schreiben, denn das Kommando exit beendet die Prozedur.


Die Shell-Prozedur endeaktion zeigt, wie der Endestatus innerhalb einer Prozedur ausgewertet werden kann:

: Aufruf mit sh endeaktion datei
(if [ -f "$1" ]
   then exit 2
   elif [ -d "$1" ]
         then exit 3
         else exit 4
 fi)
 case $? in
      2) echo Inhalt der Datei $1:; cat $1;;
      3) echo Inhalt von $1:; ls -l $1;;
      4) echo Die Eingabe $1 hat fuer diese Prozedur keinen Sinn!
 esac

Die runden Klammern um die if-Anweisung bewirken, dass eine Subshell aufgerufen wird. Diese Subshell beendet sich mit dem Endestatus, der bei dem betreffenden Kommando exit angegeben ist. Anschließend meldet sich die übergeordnete Shell zurück; das ist die Shell, die die Prozedur endeaktion bearbeitet. Sie führt die restlichen Kommandos der Prozedur aus.

Siehe auch

false

exit() [4]