Bedingungsüberprüfungen – If & Case

Im vorherigen Artikel habt ihr bereits etwas von vers. Schleifenarten gehört.
Natürlich gibt es, wie in vielen anderen Programmiersprachen, auch unter Linux die Anweisungen mit if und case.

1. Die if-Anweisung
Der grundlegende Standardaufbau einer if-Anweisung in bash sieht wie folgt aus:

if Kommando
then
  Aktion
  Aktion
  ...
fi

Dennoch wird dieser einfach Aufbau nur sehr selten verwendet. Meist finden wir die if-Anweisung in Kombination mit dem test-Befehl.

Was ist der test-Befehl?
Damit es jetzt sinnvolle Möglichkeiten gibt, Bedingungen zu überprüfen brauchen wir ein Programm, welches verschiedene Tests durchführt und jeweils bei gelungenem Test eine 0 als Rückgabewert zurückgibt, bei mislungenem Test eine 1. Dieses Programm heißt test und ermöglicht alle wesentlichen Bedingungsüberprüfungen, die für das Shell-Programmieren notwendig sind.

Neuer Aufbau:

if test ...
then
  Aktion
  Aktion
  ...
fi

Damit wir aber nicht jedes mal das Wörtchen test schreiben müssen gibt eine bessere Schreibweise, die wie folgt aussieht:

if [ ... ]
then
  Aktion
  Aktion
  ...
fi

Hierbei ist besonders zu beachten, dass zwischen dem if und der [ ein Leerzeichen stehen muss, sowie zwischen der [ und der nachfolgenden Prüfung.
Hier ein kleines Beispiel:

#!/bin/bash
a="test"
if [ "$a" == "test" ]
then
  echo "Die beiden Variablen stimmen überein!"
elif [ "$a" == "name" ]
  echo 'Die Variable a hat den Wert "name" '
else
  echo "Die beiden Variablen stimmen nicht überein!"
fi

An jeder Stelle wo jetzt zur Veranschaulichung ein _ ist MUSS später ein Leerzeichen sein.

if_[_"$a"=="test"_]

Wenn ihr diese einhalten tut, werden eure Bedingungen ohne Probleme funktionieren.

—————————————————————————

2. Case – Mehrfachauswahl
Oft kommt es vor, dass eine Variable ausgewertet werden muss und es dabei viele verschiedenen Möglichkeiten gibt, welche Werte diese Variable annehmen kann. Natürlich wäre es mit einer langen if-elif-elif-elif… Anweisung möglich, so etwas zu realisieren, das wäre aber sowohl umständlich, als auch schwer zu lesen.

Aufbau:

case Variable in
  Muster1) Kommando1 ;;
  Muster2) Kommando2 ;;
  Muster3) Kommando3 ;;
  ...
esac

Beispielsweise habt ihr eine Abfrage mit den Antwortmöglichkeiten JA und NEIN

#!/bin/bash
printf "Soll die Datei ausführbar sein? [y/n]"
		read EXECUTE
		case "$EXECUTE" in
			[Yy][Ee][Ss]|[Yy]|[Jj])	chmod +x $PFAD
			;;

			[Nn][Oo]|[Nn])		echo "Datei ist nicht ausführbar!"
			;;

			*)			echo 'Bitte entscheiden Sie sich für "y" bzw "n"'
			;;
		esac

Zeilenerklärungen:
1 – Ihr macht eine einfache Ausgabe ohne Zeilenumbruch
2 – der User wird aufgefordert eine Eingabe zu tätigen
3 – der eingegeben Wert der Variablen wird nun überprüft
4 – folgende Antwortmöglichkeiten sind durch diese Schreibweies möglich: yes (in Groß- und/oder Kleinschreibung) und ein einfaches y/Y bzw j/J
7 – folgende Antwortmöglichkeiten sind durch diese Schreibweies möglich: no (in Groß- und/oder Kleinschreibung) und ein einfaches N bzw n
10- das * steht fur alle anderen Fälle, falls ein User z.B. als Antwort: schlange eingibt (keine Ahnung warum dies machen sollte, aber manchmal sieht man sowas).
12- mit esac (case rückwärts) wird die case-Auswahl geschlossen

—————————————————————————

Die Beispiele findet ihr natürlich wieder zum downloaden hier: Download

– Julien

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert