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