Für die bedingte Ausführung von Teilen eines Skripts kann man zwischen if und case wählen. Ein if verwendet den Rückgabewert (exit-Status) eines Ausdrucks als Bedingung, während case einen String nacheinander gegen mehrere Muster prüft, und beim ersten Treffer den entsprechenden Zweig ausführt.
Mit if kann man einen Teil eines Skripts in Abhängigkeit einer Bedingung ausführen lassen. Die Angabe mehrerer Alternativen mit elif und maximal ein else ist möglich. Die if-Anweisung wird mit einem fi beendet.
Die Struktur kann also etwas variieren. Die einfachste Form sieht so aus:
if
Bedingung
then
kommando1
kommando2
...
fi
In voller Schönheit hat die Fallunterscheidung diese Form:
if
EineBedingung
then
kommando1
kommando2
...
elif
NochEineBedingung
then
nocheinkommando1
nocheinkommando2
...
...
else
undnocheinkommando1
undnocheinkommando2
...
fi
Als Bedingung wird häufig test beziehungsweise
[ ... ]
verwendet,
siehe test-Ausdrücke, true, false.
if gcc meinprg.c -o meinprg then echo "hat geklappt!" else echo "Schade!" fi
Mit der case-Anweisung kann man einen String Ausdruck
gegen mehrere Muster testen lassen. Die Kommandos, die zum ersten
passenden Muster gehören, werden dann ausgeführt:
case
Ausdruck in
muster1)
Kommando1
...
;;
muster2)
AnderesKommando1
...
;;
...
esac
Jeder Block, der zu einem Muster gehört, muß mit doppelten Semikolon
;;
abgeschlossen werden.
Als Muster kann man beliebige Strings verwenden, wobei *
auf
beliebige Zeichen (auch auf keines) zutrifft, ?
auf genau ein
Zeichen, und mehrere Muster mit einem |
(für logisches ODER)
zusammengefaßt werden können.
for f in * do case $f in *.c|*.cpp|*.h) echo $f ist ein Quelltext. ;; *.txt) echo $f ist eine Textdatei. ;; *) echo $f hat einen unbekannten Dateityp" ;; esac done
AnyWare@Wachtler.de