Notice: Undefined index: string in /var/www/stefan/howtux.de/htdocs/article.php on line 49

Notice: Undefined index: settings in /var/www/stefan/howtux.de/htdocs/article.php on line 61
Home / Linux Shell-Skripte / Bedingte Anweisungen

Bedingte Anweisungen

Kategorie: Linux Shell-SkripteErstellt: 02.10.2007 - 23:58 
Autor: Stefan Abu Salah
0

Bedingte Anweisungen

Eine bedingte Anweisung ist in der Programmierung eine Anweisung, die nur unter einer bestimmten Bedingung ausgeführt wird. Sie ist einer der wichtigsten Bestandteile der Programmierung, da durch sie ein Programm auf unterschiedliche Zustände und Eingaben reagieren kann.

if,elif,else,fi
Am häufigsten finden if-Anweisungen Anwendung in Shellskripten. Sie haben einen ähnlichen Aufbau, wie Sie dies aus anderen Programmiersprachen gewohnt sind. Ein Unterschied zu C/C++ ist, dass die die Bedingung einschließenden Klammern eckig "[]" und nicht rund "()" sind. Hierbei ist zwingend darauf zu achten, dass vor und nach jeder eckigen Klammer ein Leerzeichen stehen muss. Auf diese in eckigen Klammern eingebetteten Bedingungen folgt immer das Schlüsselwort "then".

Ist die vorhergehende Bedingung nicht erfüllt, so ist es möglich mittels der Anweisung elif beliebig viele weitere Bedingungungen hinzuzufügen. Sind alle Bedingungen nicht erfüllt kann man mit dem Schlüsselwort else eine Alternative hinzufügen.

Abgeschlossen wird jeder if,elif,else-Block von dem Schlüsselwort fi.

Beispiel: if
if [ BEDINGUNG ]
then
ANWEISUNGEN
fi

Beispiel: if,elif,else,fi
Beispiel: if
if [ BEDINGUNG ]
then
ANWEISUNGEN
elif [ BEDINGUNG ]
then
ANWEISUNGEN
else
ANWEISUNGEN
fi

Vor und nach jeder eckigen Klammer muss ein Leerzeichen stehen

test
Das Programm test bietet uns die Möglichkeit Bedingungen zu formulieren. Der Rückgabewert von test ist entweder WAHR oder FALSCH. In dem Fall das test WAHR liefert wird die darauf folgende Bedingung ausgeführt, ansonsten nicht.

Einige Optionen: test

STRING1 = STRING2 Die Strings sind gleich
STRING1 != STRING2 Die Strings sind ungleich
INTEGER1 -eq INTEGER2 Die Zahlen sind gleich
INTEGER1 -ge INTEGER2 Zahl 1 ist größer oder gleich Zahl 2
INTEGER1 -gt INTEGER2 Zahl 1 ist größer als Zahl 2
INTEGER1 -le INTEGER2 Zahl 1 ist kleiner oder gleich Zahl 2
INTEGER1 -lt INTEGER2 Zahl 2 ist kleiner als Zahl 2
INTEGER1 -ne INTEGER2 Zahl 1 ist ungleich Zahl 2

Auf Linuxsystemen befindet sich unter /usr/bin ein Programm namens [. Hierbei handelt es sich um das ausführbare Programm test. Folgende Beispiele zeichen die äquivalenz von test und [ :

Beispiel:
stefan@troubadix/home/stefan$ if [ 5 -eq 5 ]; then echo "Hallo"; fi
Hallo

stefan@troubadix/home/stefan$ if test 5 -eq 5 ; then echo "Hallo"; fi
Hallo

Beispiel: Zahlenvergleiche
if [ 5 -le 8 ]
then
echo "5 ist keiner als 8"
fi

Beispiel: Stringvergleiche
string="hund"

if [ "$string" = "hund" ]
then
echo "hund gefunden"
fi

case
Eine weitere Möglichkeit eine bedingte Anweisung zu realisieren beitet case. Bei case werden alle Bedingungen explizit ausprogrammiert. Normalerweise arbeitet man mit case auf einer Variablen, welche im Folgenden auf unterschiedliche Fälle getestet wird. Folgendes Beispel zeigt den Aufbau einer case-Anweisung:

Beispiel: case
case WERT in
Fall_1)
ANWEISUNG
;;
Fall_2)
ANWEISUNG
;;
Fall_3)
ANWEISUNG
;;
*)
ANWEISUNG SONST
;;
esac

Ein Fall wird in case-Anweisungen immer mit zwei Semikolon abgeschlossen (;;). Das Ende einer case-Anweisung muss zwingend mit der Anweisung esac abgeschlossen werden. Trifft kein Fall zu wird, wenn vorhanden, die default-Anweisung abgearbeitet, welche mit *) gekennzeichnet wird. Dies entspricht im Wesentlichen des else-Zweigs der if-Anweisung.

Beispiel: case
wert=10;

case $wert in
9)
echo "Die Zahl ist eine 9"
;;
10)
echo "Die Zahl ist eine 10"
;;
11|12)
echo "Die Zahl ist eine 11 oder ein 12"
;;
*)
echo "Keine Ahnung was das für eine Zahl ist"
;;
esac



Notice: Undefined variable: urli in /var/www/stefan/howtux.de/htdocs/classes.php on line 240
Bookmark auf del.icio.usBookmark auf Mister WongBookmark auf BlinklistBookmark auf GoogleBookmark auf LinkarenaBookmark auf YiggBookmark auf FolkdBookmark auf Yahoo
Home / Linux Shell-Skripte / Bedingte Anweisungen
simplum