Cas dynamique déclaration en bash
Je suis à essayer de comprendre comment créer une dynamique de cas dans un script bash.
Par exemple, disons que j'ai de la sortie d'un awk déclaration avec le contenu suivant
red
green
blue
Dans ce scénario, la sortie peut changer à tout moment.
Je suis en train de l'exécuter alors d'une logique différente si une valeur est incluse dans cette awk sortie.
Donc, si les données ci-dessus est en $liste, alors j'avais sur le plan conceptuel, comme pour faire quelque chose comme:
case "${my_var}" in
$list)
.....
something_else)
.....
esac
Je suis en train de l'utiliser pour construire une dynamique onglet personnalisé fonction d'achèvement (voir http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2 de fond).
Des idées?
Grâce.
- La question intéressante est: "comment allez-vous préciser ce qui se passe dans l' ..... une partie de l'affaire pour chacune des actions?"
Vous devez vous connecter pour publier un commentaire.
Un
case
déclaration n'est probablement pas le bon outil pour le travail. Si vous stockez lesawk
de sortie dans un tableau, alors vous pouvez parcourir le tableau pour trouver si un choix est en elle, et comme un bonus peut comprendre de l'index qui est, trop.Vous pouvez créer une dynamique en cas de déclaration de bash en procédant comme suit:
1) s'assurer que la liste est PIPE (|) séparés. C'est à dire. rouge|vert|bleu
2) l'enveloppe de votre instruction de cas dans un eval
Par exemple:
Cela fonctionne pour une simple variable de traitement, je ne peux pas garantir que cela fonctionne dans tous les cas.
Vous ne pouvez pas faire cela avec une instruction du cas, mais il est assez facile à mettre en place votre propre helper de vérifier l'appartenance à une liste.
Vous pouvez aborder ce dans un couple de différentes hacky façons: