Dynamic case-Anweisung in der bash
Ich versuche, herauszufinden, wie die Erstellung einer dynamischen case-Anweisung in ein bash-Skript.
Zum Beispiel, sagen wir, ich habe die Ausgabe des awk-Anweisung mit dem folgenden Inhalt
red
green
blue
In diesem Szenario die Ausgabe kann sich jederzeit ändern.
Ich versuche, führen Sie dann andere Logik wenn ein Wert enthalten ist in diesem awk-Ausgabe.
Also, wenn Sie die Daten oben in $Liste, dann würde ich konzeptionell etwas tun wie:
case "${my_var}" in
$list)
.....
something_else)
.....
esac
Ich versuche, verwenden Sie diese, um dynamische benutzerdefinierte tab-completion Funktion (siehe http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2 für einige hintergrund).
Irgendwelche Ideen?
Dank.
- Die interessante Frage ist: "wie wollen Sie festlegen, was geht in die ..... Teil der Fall, für jede der Aktionen?"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
case
Aussage ist wohl nicht das richtige Werkzeug für den job. Wenn Sie speichern dieawk
Ausgabe in ein array, dann können Sie eine Schleife durch das array zu finden, wenn eine Wahl ist, und als bonus können Sie herausfinden, welcher index das ist, auch.Können Sie erstellen, die ein dynamisches case-Anweisung in bash, indem Sie Folgendes tun:
1) stellen Sie sicher, die Liste ist PIPE (|) getrennt. DH. rot|grün|blau
2) wickeln Sie Ihre case-Anweisung in eine eval -
Beispiel:
Dies funktioniert für einfache variable Verarbeitung, ich kann nicht garantieren, dies funktioniert in allen Fällen.
Können Sie nicht tun dies mit einer case-Anweisung, aber es ist leicht genug, um Ihre eigenen Helfer, um den check-Liste für die Mitgliedschaft.
Sie können dieses Konzept in ein paar verschiedene hacky Möglichkeiten: