case

Aus Mikiwiki
Wechseln zu: Navigation, Suche

Die Verzweigung case ist eine bedingte Abfrage innerhalb einer Shell.

Inhaltsverzeichnis

Syntax

Folgende Mehrfachverzweigung führt Befehlsliste1 aus, deren Muster zur Zeichenkette Variable passt. Die angegebenen Muster dürfen auch die von der Shell verstandenen Jokerzeichen enthalten, z. B. "?", "*" und "[...]" für Bereichsangaben. Vor der Klammer dürfen mehrere durch "|" getrennte Muster stehen - die zugehörige Befehlsliste wird ausgeführt, falls eines der Muster zutrifft.

Ist der Exist-Status des letzten Befehls von Befehlsfolge1 eine 0, dann wird der "then"-Teil ausgeführt. Andernfalls wertet die Shell eine allfällig folgende und mit "elif" eingeleitete Befehlsfolge2 aus. Der zugehörige "then"-Teil wird ebenfalls nur ausgewertet, falls Befehlsfolge2 den Exit-Status 0 liefert. Steht am Ende der Sequenz eine "else"-Anweisung, dann wird Befehlsliste3 ausgeführt, falls keine der zuvor durchgeführten Abfragen zutrifft.

case Variable in
  Muster1) Befehlsliste1 ;;
  [Muster2) Befehlsliste2 ;;]
esac

Verwendung

case $sprich in
  1) echo "eins";;
  2) echo "zwei";;
  3) echo "drei";;
esac

Ohne Optionen aufgerufen zeigt das folgende Skript den Inhalt des aktuellen oder eines angegebenen Verzeichnisses nebst Dateitypen, Zugriffsrechten usw.

  • Die Optionen "/B" oder "/C" führen zur einfache Anzeige der Dateiennamen.
  • Die Optionen "/P" oder "/p" führt zur seitenweisen Ausgabe der Information.
  • Die Optionen "/W" oder "/w" zeigen die Dateinamen spaltenweise an.
#!/bin/sh
case $1 in
/B|/C) ls $2 ;;
/[Ww]) ls -C $2 ;;
/[Pp]) ls -al $2 | more ;;
*) ls -al $1
esac

$ ./dir -w 35