oct 21
Variables variables en Bash
Il peut parfois être pratique d’avoir des noms de variables qui soient variables. C’est-à-dire un nom de variable qui est affecté et utilisé dynamiquement. En bash, il suffit de d’utiliser la construction « ${!variable} » pour déréférencer la variable ayant son nom contenu dans $variable. Voici un exemple d’utilisation concret :
#!/bin/bash
BACKUP_DAY=10
BACKUP_WEEK=4
LIST=( DAY WEEK )
for i in ${LIST[@]}; do
i="BACKUP_$i"
echo "$i : ${!i}"
done
Affichera :
BACKUP_DAY : 10 BACKUP_WEEK : 4
À lire :

Le 22 octobre 2009 à 10:13
Mille merci, genre d’astuce très utile !!
Le 22 octobre 2009 à 10:17
Salut,
voilà une info qui m’aurait servi il y a tout juste une semaine ! Sans le vouloir, j’ai trouvé une solution alternative : $[i], qui a l’air de produire le même résultat. Connais-tu la différence ?
Le 22 octobre 2009 à 10:25
Salut !
Ta solution $[i] correspond à l’ancienne forme de l’évaluation arithmétique (remplacée par $((i))) qui est déprécié donc n’existera plus dans les prochaines versions de bash.
Qui dit arithmétique, dit que ça ne fonctionnera que si les variables sont numériques alors qu’avec la syntaxe ${!var}, ça fonctionne même avec le texte.
Le 22 octobre 2009 à 14:15
Effectivement… Je me coucherai bien moins bête ce soir grâce à toi, merci bien
Le 22 octobre 2009 à 15:39
Afin d’avoir le meme resultat on peut aussi taper la commande suivant:
eval FILES=\$${FILES}