Einfache Berechungen Der Kommandozeileninterpreter Bash Schleifen Inhalt Index


Verzweigungen if und case

Mit if-Anweisungen steuert man in Abhängigkeit eines Ausdruckes den Programmablauf:

if <Bedingung>; then
   <Kommando(s)>
[elif <Bedingung>; then]
   <Kommando(s)>
[else]
   <Kommando(s)>
fi

Beispiel:

#!/bin/sh

if test $# -ne 2; then
   echo "Das Kommando benoetigt zwei Argumente!"
   exit 1
else
   echo "Parameter 1: $1, Parameter 2: $2"
fi

if-Verzweigungen können verschachtelt werden:

if [ $# -gt 2 ]; then       # Zeile 1
   # tue irgendwas
else
   if test $# -ne 2; then   # Zeile 4
      # tue etwas anderes
   fi
fi

Die Tests in Zeile 1 und 4 sind semantisch äquivalent, sieht man einmal davon ab, dass im ersten Test überprüft wird, ob die Anzahl der Parameter größer 2 ist und im zweiten auf "ungleich 2" getestet wird.

Um große Verschachtelungstiefen bei if-Konstrukten zu vermeiden, kann die case-Anweisung verwendet werden:

case "Variable" in
   <Muster1> ) <Kommando(s)> ;;
   <Muster2> ) <Kommando(s)> ;;
   <Muster3> ) <Kommando(s)> ;;
esac

Beispiel:

#!/bin/sh
option=
daten=

for i do               # Erklärung im nächsten Abschnitt
   case "$i" in
      -* ) option="$option $i";;
      * ) daten="$daten $i";;
   esac
done

echo "Optionen: $option"
echo "Daten: $daten"

case arbeitet mit Mustervergleich von Zeichenketten, deshalb wird der Vergleichsausdruck in Doppelanführungszeichen gesetzt ("$i"). Mit welchem Muster der Ausdruck zu vergleichen ist, steht vor einer schließenden runden Klammer; -* bedeutet also: Die Muster stimmen überein, sobald der Vergleichsausdruck mit einem Minus beginnt. Die Anweisungen ab dem ersten zutreffenden Vergleich werden abgearbeitet bis zu einem expliziten Abbruch (zwei Semikola in Folge ;;) oder bis zum Ende der case-Anweisung.


Einfache Berechungen Der Kommandozeileninterpreter Bash Schleifen Inhalt Index