Bedingungen
Die if-Anweisung wählt zwischen Alternativen. Die einfachste Form ist die if-then-Anweisung.
if befehl
then
- block
fi
z.B.
#!/bin/bash
if [ 'whoami' == "user" ]
then
- echo "Sie sind ein normaler Benutzer"
fi
Die Erweiterung der if-then-Anweisung ist die if-then-else-Anweisung.
if befehl1
then
- block1
else
- block2
fi
z.B.
#!/bin/bash
if [ 'whoami' == "user" ]
then
- echo "Sie sind ein normaler Benutzer"
else
- echo "Ätsch, Sie sind kein Administrator"
fi
Schließlich gibt es noch die if-then-elif-else-Anweisung für beliebig viele Tests.
if befehl1
then
- block1
elif befehl2
then
- block2
elif...
...
else
- blockN
fi
z.B.
#!/bin/bash
if [ 'whoami' == "user" ]
then
- echo "Sie sind ein normaler Benutzer"
elif [ "$USER" == "root" ]
then
- echo "Sie sind vielleicht der Administrator"
elif [ "$SCHMIERGELD" -gt 1000000 ]
then
- echo "Bestechen Sie den Administrator"
else
- echo "Ätsch, Sie werden nie Administrator"
fi
Die case-Anweisung verzweigt nach der Auswertung eines Wertes zu den passenden Abschnitten im Skript.
case STRING in
ausdruck1)
- block1;;
ausdruck2)
- block2;;
...
ausdruckN
- blockN;;
*)
- elseblock;;
esac
z.B.
#!/bin/bash
echo "Sind Sie Administrator? j/n"
read ANTWORT
case $ANTWORT in
- j|J) echo "Sie sind der Boss hier";;
- n|N) echo "Sie haben hier nicht viel zu sagen";;
- *) echo "Was haben Sie eingegeben?";;
esac
STRING ist irgendein Wert der meist ein Variablenwert wie $EINGABE ist. ausdruck1 bis ausdruckN sind Muster. Das letzte *) wirkt wie ein letztes else um z.B. eine nicht erwartete Eingabe abzufangen. Jeder Befehlsblock muss mit ;; abgeschlossen werden.
Schleifen
Die while-Schleife wiederholt einen Befehlsblock solange eine bestimmte Bedingung erfüllt ist.
while bedingung
do
- befehlsblock
done
z.B.
#!/bin/bash
ZAEHLER=0
while [ $ZAEHLER -lt 5 ]
do
- echo "Ausgabe Nr. $ZAEHLER"
- ZAEHLER='expr $ZAEHLER + 1'
done
Dieses Skript erzeugt die folgende Ausgabe:Ausgabe Nr. 1
Ausgabe Nr. 2
Ausgabe Nr. 3
Ausgabe Nr. 4
Ausgabe Nr. 5
Die until-Schleife wiederholt einen Befehlsblock so lange bis die Bedingung erfüllt ist.
until bedingung
do
- befehlsblock
done
z.B.
#!/bin/bash
ZAEHLER=0
until [ $ZAEHLER -gt 5 ]
do
- echo "Ausgabe Nr. $ZAEHLER"
- ZAEHLER='expr $ZAEHLER + 1'
done
Die Ausgabe des Skripts ist die gleich wie im Beispiel der while-Schleife.
Die for-Schleife ähnelt nur auf den ersten Blick seinen Pendants aus anderen Programmiersprachen. In anderen Sprachen wird die for-Schleife meistens dazu benutzt, eine Zählvariable über einen bestimmten Wertebereich hochzählen zu lassen (for i = 1 to 100...next). In der Shell dagegen wird die Laufvariable nicht mit aufeinanderfolgenden Zahlen belegt, sondern mit einzelnen Werten aus einer anzugebenden Liste
for VARIABLE in liste
do
- befehlsblock
done
z.B.
#!/bin/bash
for NAME in iceWM SirOfDefault fowiwg
do
- echo "$NAME ist Forenmitglied"
done
Die Ausgabe des Skripts sieht folgendermaßen aus:iceWM ist Forenmitglied
SirOfDefault ist Forenmitglied
fowiwg ist Forenmitglied
Endlos-Schleifen werden durch while mit der Bedingung true oder durch until mit false realisiert. Diese Schleifen werden in der Regel mit Hilfe einer Bedingung mit break oder exit beendet.
z.B.
...
if [ VARIABLE == 100 ]
then
- exit
fi
...
Keine Kommentare:
Kommentar veröffentlichen
Alle Kommentare werden vor Veröffentlichung geprüft.