![]() ![]() ![]() |
![]() ![]() |
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.
![]() ![]() ![]() |
![]() ![]() |