ZSH pour le tableau de boucle variable issue
je travaille en ZSH, mais je suis sûr que les instructions BASH seront probablement utiles aussi. J'ai besoin d'avoir une boucle for qui passe par les valeurs stockées dans le tableau lw et lance ensuite un script shell, basé sur le nom stocké dans le tableau.
jusqu'à présent, c'est ce que j'ai trouvé:
$lw=('plugin1' 'plugin2' 'plugin3')
for i in $lw;
do . ~/Library/Rogall/plugins/$lw[$i]/lw.prg end;
done
il me donne juste une erreur en disant qu'il ne peut pas trouver ~ / Library/Rogall/plugins/ / lw.prg, donc il semble que c'est juste en ignorant ma variable tout togethor.
N'importe quelles idées où j'ai foiré?
2 réponses
C'est en fait beaucoup plus simple que cela:
lw=('plugin1' 'plugin2' 'plugin3')
for i in $lw; do
. ~/Library/Rogall/plugins/$i/lw.prg end
done
En résumé:
- Attribuer à "toto", pas "$foo" (l'interpréteur de commandes devrait essayer de l'élargir $foo, et de confier à ce qu'il développe; en général pas utile)
- utilisez la variable loop directement; elle contient le tableau valeur plutôt que index
pourquoi prendre la peine d'utiliser le tableau? Cela peut être fait en sh portable très facilement:
lw='plugin1 plugin2 plugin3'
for i in $lw;
do . ~/Library/Rogall/plugins/$i/lw.prg end
done
notez que pour que cela fonctionne en zsh, vous devez faire en sorte que zsh fasse la bonne chose avec: set -o shwordsplit