case: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
(New page: Die Verzweigung <b>case</b> ist eine bedingte Abfrage innerhalb einer Shell. == Syntax == Folgende Mehrfachverzweigung führt <i>Befehlsliste1</i> aus, deren <i>Muster</i> zur Ze...)
 
Keine Bearbeitungszusammenfassung
Zeile 38: Zeile 38:
{{cat|Kontrollstruktur}}
{{cat|Kontrollstruktur}}
{{cat|Shell}}
{{cat|Shell}}
{{cat|Verzweigung}}

Version vom 7. Februar 2010, 20:52 Uhr

Die Verzweigung case ist eine bedingte Abfrage innerhalb einer Shell.

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