Interprêter dynamiquement une variable sous UNIX

Résolu
Hello à tous !

J'ai une liste de variables et pour chaque variable, je souhaite que UNIX interprête chaque variable....

Le code :

FOLDER="SOFT_APPLI BINSFT_APPLI CONF_APPLI"
### FOLDER = Liste de variables

for LST in 'echo ${FOLDER}'
do
echo ${LST}
### => SOFT_APPLI puis BINSFT_APPLI puis CONF_APPLI

### Concatène un "$" pour déclarer à UNIX que c'est une variable
VAR="$"${LST} ### Attendu $SOFT_APPLI puis $BINSFT_APPLI puis $CONF_APPLI

### Comment forcer UNIX à interprêter cette variable ?
### Pour info : $SOFT_APPLI = /applix/WA/.....

echo ${VAR}
### Résultat = $SOFT_APPLI
### Attendu = /applix/WA/.....
done

Merci pour votre aide.

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,

    $ A="Bonjour";B="Salut";C="Bye Bye"

    $ D="A B C"

    $ for i in ${D[@]}; do echo "${i}";done
    A
    B
    C

    $ for i in ${D[@]}; do echo "${!i}";done
    Bonjour
    Salut
    Bye Bye


    ;-))
    1. salut zipe31,

      D
      n'est pas un tableau.
      ça semble fonctionner parce que
      ${D[@]}
      n'est pas entre guillemets (ce qui devrait ne jamais être le cas = les tableaux devraient toujours être entre guillemets ;)).
      D=( A B C )
      mais un tableau n'est pas nécessaire.
      for i in $D; do echo "${!i}"; done
    2. Contributeur
      Salut qcqcpQ,

      D
      n'est pas un tableau.
      Oups, effectivement, shame on me ;-[

      mais un tableau n'est pas nécessaire.
      for i in $D; do echo "${!i}"; done
      Exact. Merci ;-))
  2. J'ai trouvé !!!!!

    Faut faire un eval "echo ${VAR}"

    Script final :
    FOLDER="SOFT_APPLI BINSFT_APPLI CONF_APPLI"
    ### FOLDER = Liste de variables

    for LST in 'echo ${FOLDER}'
    do
    echo ${LST}
    ### => SOFT_APPLI puis BINSFT_APPLI puis CONF_APPLI

    ### Concatène un "$" pour déclarer à UNIX que c'est une variable
    VAR="$"${LST} ### Attendu $SOFT_APPLI puis $BINSFT_APPLI puis $CONF_APPLI

    echo $VAR
    ### Comment forcer UNIX à interprêter cette variable ?
    ### Ex : echo $SOFT_APPLI => /applix/WA/.....
    eval "echo ${VAR}"
    done