if - Verzweigung
Der if-Befehl
kann in Abhängigkeit einer Bedingung zu verschiedenen Aktionen
verzweigen. Ist die Bedigung erfüllt (0/TRUE),
so werden die Kommandos des then-Zweiges ausgeführt.
Andernfalls (nicht-0/FALSE) treten die Aktionen des
else-Zweiges in Kraft. Der else-Zweig
kann auch entfallen, die Verarbeitung wird stets nach dem fi
fortgeführt. Wichtig ist, dass die BEDINGUNG in eckigen
Klammern steht und die einzelnen Komponenten darin mit Blanks
getrennt werden.
Syntax: |
Beispiel: |
if BEDINGUNG |
if [ $LOGNAME = "PCZ" ] |
Bedingungen
Es ist zu empfehlen,
dass sämtliche Bedingungen immer mit der Funktion test
formuliert werden. Mit der Funktion test können
Sie den Dateistatus feststellen, numerische Tests und
Zeichenkettentests durchführen. Anstelle von test
können aber ebenso eckige Klammern [ ] um die Abfrage herum
geschrieben werden.
Dateistatus-Tests:
Syntax |
Beispiel |
Beschreibung |
if test -e datei |
if test -e c:/winnt/winfile.ini |
True, wenn die Datei existiert |
if test -r datei |
if test -r c:/winnt/winfile.ini |
True, wenn die Datei lesbar ist |
if test -w datei |
if test -w c:/winnt/winfile.ini |
True, wenn die Datei beschreibbar ist |
if test -x datei |
if test -x c:/winnt/winfile.ini |
True, wenn die Datei ausführbar ist |
if test -d datei |
if test -d c:/winnt/winfile.ini |
True, wenn die Datei ein Verzeichnis (Directory) ist |
if test -s datei |
if test -s c:/winnt/winfile.ini |
True, wenn die Datei nicht leer ist |
Numerische-Tests:
Syntax |
Beispiel |
Beschreibung |
if test x1 -eq x2 |
if test zahl_1 -eq zahl_2 |
True, wenn x1 gleich x2 ist |
if test x1 -ne x2 |
if test zahl_1 -ne zahl_2 |
True, wenn x1 ungleich x2 ist |
if test x1 -gt x2 |
if test zahl_1 -gt zahl_2 |
True, wenn x1 größer als x2 ist |
if test x1 -lt x2 |
if test zahl_1 -lt zahl_2 |
True, wenn x1 kleiner als x2 ist |
if test x1 -ge x2 |
if test zahl_1 -ge zahl_2 |
True, wenn x1 größer gleich x2 ist |
if test x1 -le x2 |
if test zahl_1 -le zahl_2 |
True, wenn x1 kleiner gleich x2 ist |
Zeichenketten-Tests:
Syntax |
Beispiel |
Beschreibung |
if test x1 |
if test $LOGNAME |
True, wenn x1 nicht leer ist |
if test -z x1 |
if test -z $LOGNAME |
True, wenn x1 die Länge 0 hat |
if test -n x1 |
if test -n $LOGNAME |
True, wenn x1 nicht die Länge 0 hat |
if test x1 = x2 |
if test $LOGNAME = "PCZ" |
True, wenn x1 gleich x2 ist |
if test x1 != x2 |
if test $LOGNAME != "PCZ" |
True, wenn x1ungleich x2 ist |
Darüberhinaus lassen sich die Tests
verneinen |
! |
UND-verknüpfen |
-a |
ODER-verknüpfen |
-o |
Klammern |
( ) |
Case-Verzweigung:
Syntax: |
Beispiel: |
case VARIABLE in |
ESSEN=erbse |
For-Schleife:
Syntax: |
Beispiel: |
for VARIABLE in Wort1 Wort2
..... Wortn |
for FRUCHT in apfel kirsche
banane |
While-Schleife:
Syntax: |
Beispiel: |
while BEDINGUNG do KOMMANDOS done |
echo "Gib ein Wort ein:" |
Until-Schleife:
Syntax: |
Beispiel: |
until BEDINGUNG do KOMMANDOS done |
echo "Gib ein Wort ein:" |
While-Schleifen und Until-Schleifen können zusätzlich mit dem Befehl break beendet werden oder mit dem Befehl continue an den Schleifenanfang springen. Ist die Bedingung nicht mehr erfüllt oder wurde mittels break abgebrochen, so geht es nach done weiter.