PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dynamische Konditionen bei Case-Test [BASH]



typo
24-08-2009, 16:51
Hallo,
ich habe hier ein Shell Script bei dem ich die Konditionen des Case-Tests dynamisch generieren möchte.


opt="6|7|8"; case "6" in $opt) echo yes;; esac #funktioniert nicht


opt="6|7|8"; case "6|7|8" in $opt) echo yes;; esac # yes


opt="6|7|8"; eval "case "6" in $opt) echo yes;; esac" # yes

Die dritte Variante erzeugt das Ergebnis, das ich möchte. Wenn ich den Test aber erweitern würde, wäre die Nutzung von eval schnell sehr kompliziert. Deshalb möchte ich das vermeiden. Welche Möglichkeiten gibt es? Kann man eval evtl. nur auf $opt anwenden?

Danke im voraus und Gruss,
typo

zst
24-08-2009, 18:25
Hallo typo,
eine Alternative zum case-Test könnte so aussehen:


opt="6|7|8"
ZAHL=8 ### die "case-Zahl"
echo "$opt" | (grep -q "$ZAHL" && echo "$ZAHL = yes") || echo "$ZAHL = no"

Ausgabe:
8 = yes


Gruss zst