Existe-t-il un moyen de créer des variables bash et de leur attribuer des valeurs via une boucle?
Quelque chose dans le sens de:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
EDIT: Merci à @Costas et @mdpc d'avoir souligné que ce serait une mauvaise alternative à une liste; la question n'est que théorique.
bash
shell
shell-script
toxefa
la source
la source
var"$c"
le casse. La réponse de @Costas montre comment attribuer plusieurs valeurs à une seule variable de liste - je demande simplement théoriquement si des variables peuvent réellement être générées avec une boucle.Réponses:
Eh bien, vous pouvez absolument utiliser eval comme suit:
Ce code créera des variables nommées var0, var1, var2, ... chacune contenant le nom du fichier. Je suppose que vous aurez une bonne raison de vouloir le faire en utilisant un tableau ...
la source
Possible, vous voulez dire tableau. Il existe plusieurs façons d'attribuer des valeurs
Première:
Seconde:
Troisième:
Quatrième:
Cinquième
...
ls
, il suffit de mettre*
pour tous les fichiers[]
l' intérieur du$
signe peut être omisla source
echo $var
les commandes que vous listez ci-dessus, je ne reçois que le premier fichier "répertorié" parls
. Est-ce que je fais quelque chose de mal?echo ${var[*]}
(ou${var[@]}
), un seul élément peut être appelé commeecho ${var[1]}
. Remarque:$var
est égal${var[0]}
for v in "${var[@]}";do echo $v;done