Interprêter dynamiquement une variable sous UNIX

Résolu
enfinbref94 Messages postés 13 Statut Membre -  
enfinbref94 Messages postés 13 Statut Membre -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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


    ;-))
    0
    1. Utilisateur anonyme
       
      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
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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 ;-))
      0
  2. enfinbref94 Messages postés 13 Statut Membre
     
    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
    0