ZSH pour la boucle variable tableau en question
Im travaillant dans ZSH, mais je suis sûr que BASH instructions aidera sans doute aussi. J'ai besoin d'avoir une boucle qui passe en revue les valeurs stockées dans le tableau lw et puis lance un shell script, basé sur le nom stockés dans le tableau.
Jusqu'à présent, c'est ce que je suis venu avec:
$lw=('plugin1' 'plugin2' 'plugin3')
for i in $lw;
do . ~/Library/Rogall/plugins/$lw[$i]/lw.prg end;
done
il me donne juste une erreur lors de l'exécution en disant qu'il ne peut pas trouver le dossier ~/Bibliothèque/Rogall/plugins//lw.le prg, de sorte qu'il s'affiche de son tout en ignorant ma variable tous les togethor.
Des idées où j'ai foiré?
Essayez
echo $i
pour voir ce qu'il contient.OriginalL'auteur user1296965 | 2012-06-04
Vous devez vous connecter pour publier un commentaire.
C'est en fait beaucoup plus simple que cela:
En résumé:
Ou tout simplement
for i ($lw) . ~/Library/Rogall/plugins/$i/lw.prg end
Pas dans le cas général,
for i in $array
serait ignorer les éléments vides. Vous auriez besoin defor i in "$array[@]"
oufor i in "${(@)array}"
pour préserver le vide (ou l'ksh/bash avec une syntaxe compatible avec:for i in "${array[@]}"
).OriginalL'auteur Jan Krüger
Pourquoi s'ennuyer à l'aide de la matrice? Cela peut être fait en portable sh très facilement:
Noter que pour que cela fonctionne dans zsh, vous avez besoin de faire zsh faire la bonne chose avec:
set -o shwordsplit
Tout n'est pas d'être aussi portable que possible, surtout si c'est pour être exécuté sur un Mac (à en juger par les noms de répertoire). Aussi votre solution ne parvient pas pour le générique de cas dans lesquels il peut y avoir des espaces dans chaque mot.
Ce n'est pas un cas générique, mais un cas dans lequel il n'y a pas d'espaces dans les noms de fichiers. La portabilité n'est pas toujours nécessaire, mais il est toujours un objectif souhaitable. Et cette solution fonctionne très bien sur Mac.
Comment savez-vous que le plugin répertoires ne contiennent pas d'espaces? Les noms présentés dans le post original sont tellement génériques qu'il est sûr de supposer qu'ils ne sont pas les noms réels. Jan de la solution de travail comme il l'est sur zsh avec certains paramètres. Même si cela peut être fait avec deux modifications insignifiantes. Votre solution ne peut pas être utilisé avec des espaces blancs facilement. Mais hélas, des choses comme "les espaces dans les noms de fichiers sont une abomination" est si incroyablement place pour le débat qu'il n'est même pas drôle. Mais arrêtons-nous ici et en accord ou en désaccord.
Il n'est pas portable si elle repose sur le ZSH défaut d'être changé lorsque le contexte est probablement un .zshrc fichier. Tableau est une meilleure solution.
OriginalL'auteur William Pursell