Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Zusammengesetzte Anweisungen

&pagelevel(4)&pagelevel
for bezeichner [ in wort ... ]; do kommandofolge; done

oder

for bezeichner [ in wort ... ]
do kommandofolge
done

Mit der for-Anweisung können Sie kommandofolge mehrmals wiederholen. Dabei wird bezeichner auf jedes Wort der wortliste gesetzt und die Schleife einmal durchlaufen. Ist in wortliste nicht angegeben, dann wird kommandofolge für jeden gesetzten Stellungsparameter ("$@") einmal durchlaufen. Die Ausführung endet, wenn wortliste abgearbeitet ist.



select bezeichner [ in wortliste ]; do kommandofolge; done

oder

select bezeichner [ in wortliste ]
do kommandofolge
done

Mit der select-Anweisung können Sie kommandofolge mehrmals durch Eingabe gesteuert wiederholen. select schreibt wortliste auf die Standard-Ausgabe. Dabei wird jedem Wort eine Nummer vorangestellt. Danach wird das Bereitzeichen PS3 ausgegeben und eine Zeile von der Standard-Eingabe eingelesen. Der Inhalt der gelesenen Zeile wird der Variablen REPLY als Wert zugewiesen. Enthält diese Zeile die Nummer eines der angezeigten Wörter, dann wird an bezeichner das entsprechende Wort als Wert zugewiesen. Bei leerer Zeile wird die Ausgabe von wortliste wiederholt und bezeichner der Name der Shell-Prozedur zugewiesen.
Wurde in wortliste weggelassen, dann werden dafür, wie bei der for-Schleife, die Stellungsparameter eingesetzt. Die select-Schleife wird solange durchlaufen, bis sie durch das eingebaute Kommando break oder durch Eingabe von Dateiende abgebrochen wird.


Beispiel

Mit dieser POSIX-Shell-Prozedur können Sie Informationen über jede Datei des aktuellen Verzeichnisses einzeln abfragen:

select datei in `ls`
do
  if [ -z "$datei" ]
    then
      echo "Zahl auswaehlen"
    else
      ls -lsid $datei
  fi
done



case wort in 
[[(]muster[|muster]...)kommandofolge;;]...
esac

Die case-Anweisung gestattet Ihnen, mustergesteuert auf eine Kommadofolge zu verzweigen. Die erste kommandoliste, deren muster auf wort passt, wird ausgeführt. Die Muster werden in derselben Art angegeben, wie sie für die Erzeugung von Dateinamen verwendet werden (siehe Abschnitt „Dateinamen-Erzeugung“).

Die optionale öffnende Klammer vor muster müssen Sie angeben, wenn Sie case-Anweisungen innerhalb der Kommandosubstitution mit $(...) verwenden. Damit erreichen Sie paarweise Klammerung innerhalb von $(...).



if kommandofolge1
then Kommandofolge2
[elif kommandofolge3
then kommandofolge4]...
[else kommandofolge5]
fi

Mit der if-Anweisung können Sie entsprechend einer Bedingung verschiedene Kommandofolgen ausführen lassen. kommandofolge1 folgend auf if wird als Bedingung ausgeführt. Ist diese Bedingung wahr (Endestatus = 0), dann wird kommandofolge2 (then folgend) ausgeführt. Ist diese Bedingung falsch (Endestatus î 0), wird die Bedingung kommandofolge3 nach elif ausgeführt. Ist der Endestatus dieser Bedingung 0, wird kommandofolge4 hinter dem nächsten then ausgeführt. Im falsch-Fall wird kommandofolge5 nach else ausgeführt. Wurde keine der Kommandofolgen nach then oder else ausgeführt, dann bekommt die if-Anweisung den Endestatus 0 zugewiesen.



while kommandofolge1
do kommandofolge2
done
until kommandofolge1
do kommandofolge2
done

Durch die while- und until-Anweisungen erhalten Sie Schleifen mit Abbruchbedingung. Die while-Anweisung führt die Bedingung kommandofolge1 aus. Ist die Bedingung wahr (Endestatus des letzten ausgeführten einfachen Kommandos = 0), wird der Schleifenkörper kommandofolge2 ausgeführt und die Bedingung erneut geprüft. Ist die Bedingung falsch (Endestatus î 0), wird die Schleife beendet. Wurde kein Kommando aus kommandofolge2 (nach do) ausgeführt, dann wird der while-Anweisung der Endestatus 0 zugewiesen.

Die until-Anweisung können Sie anstelle der while-Anweisung bei negierter Bedingung verwenden. until prüft nach, ob die Bedingung falsch ist und bricht, sobald das Ergebnis wahr wird, die Schleife ab.



continue zahl

continue fährt mit der nächsten Iteration der umschließenden for-, while-, until- oder select-Schleife fort. Ist zahl angegeben, wird in der zahlten umschließenden Schleife mit der nächsten Iteration fortgefahren. Ist zahl gleich 0, wird hinter der äußersten Schleife fortgefahren. continue 1 entspricht continue.



break zahl

break bricht die umschließende for-, while-, until- oder select-Schleife ab. Ist zahl angegeben, wird in der zahlten umschließenden Schleife mit der Ausführung fortgefahren. Ist zahl gleich 0, wird die äußerste Schleife verlassen. break 1 entspricht break.



return zahl

Wird return in einer Funktion aufgerufen, kehrt dieses Kommando zur aufrufenden Prozedur zurück. Der return-Status wird durch zahl oder das letzte ausgeführte Kommando bestimmt. Wird return außerhalb von Funktionen oder in einer mit Punkt ausgeführten Prozedur aufgerufen, dann entspricht dies dem Aufruf von exit.



(kommandofolge)

kommandofolge wird in einer eigenen Umgebung ausgeführt.

Werden zur Schachtelung zwei aufeinanderfolgende öffnende runde Klammern ( benötigt, dann müssen Sie beide durch ein Leerzeichen trennen. Es könnte sonst zu einer Verwechslung mit einem arithmetischen Ausdruck kommen (siehe Kommando-Ersetzung).



kommandofolge;}

kommandofolge wird in der aktuellen POSIX-Shell einfach ausgeführt.

Auf die öffnende Klammer { muss ein Leerzeichen folgen!
Im Unterschied zu den runden Klammern ( und ) sind die geschweiften Klammern{ und } reservierte Wörter. Damit sie als solche erkannt werden, müssen { und } am Zeilenanfang oder nach einem Strichpunkt ; stehen.



[[ bedingung ]]

Der bedingte Ausdruck bedingung wird bewertet, und der Endestatus bei wahr wird auf 0 und bei falsch auf 1 gesetzt.

Siehe Bedingter Ausdruck für eine Beschreibung von bedingung.



function bezeichner { kommandofolge;}
bezeichner () { kommandofolge;}

Definition der Funktion mit dem Namen bezeichner. Dieser Name wird wie bei einem Kommando zum Aufruf verwendet. Der Funktionskörper besteht aus der kommandofolge, die in geschweifte Klammern eingeschlossen ist.

Auf die öffnende Klammer { muss ein Leerzeichen folgen!

Die geschweiften Klammern {} können weggelassen werden, wenn

  • es sich um eine einzelne for-, case-, if-, while-, until- oder select-Anweisung handelt

    Beispiel

    function bezeichner case wort in ...

    bezeichner () for bezeichner...

  • die Kommandofolge aus einer Subshell gestartet wird, d.h. () statt {}.

    Beispiel

    function bezeichner (kommandofolge)

    bezeichner () (kommandofolge)



time pipe

Die Kommandos von pipe werden ausgeführt und als Statistik die verstrichene Zeit, die user- und die system-Zeit auf der Standard-Fehlerausgabe berichtet.

Die folgenden reservierten Wörter werden nur als erstes Wort eines Kommandos erkannt und wenn sie nicht entwertet sind:

if      then    elif    else    fi      case    esac    for
select  while   until   do      done    {       }       function
time    [[      ]]