Tag Cloud

Xandros (64) Ankündigung (60) Windows (51) Tipps+Tricks (46) Programme (44) Sonstiges (42) Bericht (32) Linux (31) Fotos (26) Hardware (26) Event (21) T91 (20) Urlaub 2009 (18) Urlaub 2008 (17) Skripte (7) Glossar (5) Neue Blogs (5) Netzwerk (4) Video (3) FAQ (1)

Montag, 4. August 2008

Shell-Skripte erstellen 4. Teil

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.