![]() |
Lehrer Nussbaumer - Linux bash-Programmierung |
|---|
GrundlagenDatenstrukturenProgrammstrukturenBeispiele----------------- letzte Änderung: 09 December 2021 ----------------- Lehrer Nussbaumers Seite ... in Arbeit ... |
VerzweigungVerzweigungen realisieren so genannte "Programmentscheidungen" und ermöglichen auf diese Weise ausgefeilte Algorithmen. ifDie if - Verzweigung ist in der bash allgemein so aufgebaut: if Bedingung; then ... Anweisungen ... fi Im Beispiel wird auf Gleichheit des Wertes des Eingabeparameters getestet: #!/bin/sh if [ $1 = "Raucher" ]; then echo "$1? - Rauchen ist ungesund!" fi Damit erhalten wir z.B. die folgende Ausgabe: alfred@newbie:~/bash/beispiele > frage1 Raucher Raucher? - Rauchen ist ungesund! Um auch den Fall zu berücksichtigen, wenn die Bedingung nicht erfüllt wird, verwendet man den so genannten "else" - Zweig: #!/bin/sh if [ $1 = "Raucher" ]; then echo "$1? - Rauchen ist ungesund!" else echo "$1? - Gesunde Lebensweise!" fi Im Beispiel erhalten wir somit: alfred@newbie:~/bash/beispiele > frage2 Nichtraucher Nichtraucher? - Gesunde Lebensweise! Die Bedingung kann auch einen Programmaufruf enthalten: Kann ein Programm ordnungsgemäß beendet werden, liefert es den Rückgabewert "0", die bash ordnet diesem Wert den Boole'schen Wert "wahr" zu. Im Fehlerfall liefert das Programm "1", was die bash als "falsch" auswertet. Im Beispiel testen wir auf das Vorhandensein einer bestimmten Datei: #!/bin/sh if ls | grep 'frage3' ; then echo "Datei gefunden" fi Der Aufruf dieses Skripts liefert (natürlich) dieses Ergebnis: alfred@newbie:~/bash/beispiele > frage3 frage3 Datei gefunden Bemerkung:if - Verzweigungen können auch geschachtelt werden: #!/bin/sh
if [ $1 = "Raucher" ]; then
if [ $2 = "selten" ]; then
echo "$1, $2? - Seltenes Rauchen ist auch ungesund!"
fi
if [ $2 = "oft" ]; then
echo "$1, $2? - Häufiges Rauchen führt zum Lungenkrebs!"
fi
fi
elifIm nächsten Beispiel fügen wir einfach mehrere if-Abfragen aneinander: #!/bin/sh if [ $1 = "Raucher" ]; then echo "$1? - Rauchen ist ungesund!" elif [ $1 = "Raucherin" ]; then echo "$1? - Rauchen ist ungesund!" elif [ $1 = "Sportlerin" ]; then echo "$1? - Bewegung ist gesund!" elif [ $1 = "Sportler" ]; then echo "$1? - Bewegung ist gesund!" fi Dies hätten wir auch so lösen können: #!/bin/sh if [ $1 = "Raucher" -o $1 = "Raucherin" ]; then echo "$1? - Rauchen ist ungesund!" elif [ $1 = "Sportlerin" -o $1 = "Sportler" ]; then echo "$1? - Bewegung ist gesund!" fi Im letzten Beispiel wurden jeweils zwei Bedingungen zusammengefasst. Dies wird mit Hilfe des Programmes "test" realisiert (vgl. nächsten Abschnitt). testDie eckigen Klammern "[ ... Bedingung ... ]" in den obigen Beispielen rufen das Programm "test" auf. Wir verwenden "test" zunächst auf der Kommandozeile: alfred@newbie:~/bash/beispiele > test -f frage6; echo $? 0 Die Datei "frage6" ist im aktuellen Verzeichnis offensichtlich enthalten. alfred@newbie:~/bash/beispiele > test -f fragezeichen; echo $? 1 Die Datei "fragezeichen" ist im aktuellen Verzeichnis offensichtlich nicht enthalten. Im letzten Beispiel testen wir auf Gleichheit zweier Zahlen: alfred@newbie:~/bash/beispiele > test 1 -eq 2; echo $? 1 Das Programm "test" wird normalerweise innerhalb der if-Bedingung in bash-Skripts eingesetzt. Die folgende Tabelle gibt einen Überblick über mögliche Ausdrücke:
|