J'ai un problème avec pour la boucle dans bash. Par exemple: J'ai un tableau ("etc" "bin" "var")
. Et je répète sur ce tableau. Mais dans la boucle, je voudrais append une certaine valeur au tableau. Par exemple
array=("etc" "bin" "var") for i in "${array[@]}" do echo $i done
Cela affiche etc
bin
var
(bien sûr sur des lignes séparées). Et si j'ajoute après do
comme ça:
array=("etc" "bin" "var") for i in "${array[@]}" do array+=("sbin") echo $i done
Je veux: etc
bin
var
sbin
(bien sûr sur des lignes séparées).
Cela ne fonctionne pas. Comment puis-je le faire?
Il appenda "sbin" 3 fois comme il se doit, mais il ne sera pas itéré sur les "sbin" nouvellement ajoutés dans la même boucle.
Après le 2ème exemple:
echo "${array[@]}" #=> etc bin var sbin sbin sbin
set etc bin var while [ "$#" -gt 1 ] do [ "$1" = bin ] && set "$@" sbin printf %s\\n "$1" shift;done
Cela va parcourir votre list, virer sbin
à la fin de cette list conditionnellement, et inclure sbin
dans le contenu iterable.