oct 21

Variables variables en Bash

Tag: Bash, Debian GNU/Linux, Développement, Langages, SystèmeSylvain @ 21:29

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 :

5 réponses pour “Variables variables en Bash”

  1. Edouard a dit :

    Mille merci, genre d’astuce très utile !!

  2. lhb a dit :

    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 ?

  3. Sylvain a dit :

    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. ;)

  4. lhb a dit :

    Effectivement… Je me coucherai bien moins bête ce soir grâce à toi, merci bien ;)

  5. Jeremy a dit :

    Afin d’avoir le meme resultat on peut aussi taper la commande suivant:

    eval FILES=\$${FILES}

Laissez un commentaire