Gibt es in der Shell eine Kontrollstruktur analog case für Mehrfachauswahl?
Bekanntlich handelt es sich bei »case« um einen Schalter, mit dem man einen einfachen Wert abfragen kann, ohne jeweils die etwas unübersichtlichere »if ... elif ... else«-Sequenz verwenden zu müssen. Aber gibt es solch eine Möglichkeit auch für Mehrfachauswahl, und ich habe sie bisher nur noch nicht entdeckt?
Um das ein wenig zu veranschaulichen, habe ich ein Beispielskript geschrieben: in den Kommentaren ist enthalten, wie ich mir die Struktur in etwa vorstelle, die if-Abfrage würde dann entsprechend entfallen:
#!/bin/bash
wahl=$1
# multi-case $wahl in
# a)
if fgrep -q 'a' <<< $wahl; then
echo 'Die erste Befehls-Sequenz wird ausgeführt.'
fi
# b)
if fgrep -q 'b' <<< $wahl; then
echo 'Die zweite Befehls-Sequenz wird ausgeführt.'
fi
# c)
if fgrep -q 'c' <<< $wahl; then
echo 'Die dritte Befehls-Sequenz wird ausgeführt.'
fi
# d)
if fgrep -q 'd' <<< $wahl; then
echo 'Die vierte Befehls-Sequenz wird ausgeführt.'
fi
# e)
if fgrep -q 'e' <<< $wahl; then
echo 'Die fünfte Befehls-Sequenz wird ausgeführt.'
fi
# esac-itlum
In der Ausführung:
x@yz:~$ ./mehrfachauswahl.sh bd
Die zweite Befehls-Sequenz wird ausgeführt.
Die vierte Befehls-Sequenz wird ausgeführt.
x@yz:~$