Interprêter dynamiquement une variable sous UNIX

[Résolu/Fermé]
Signaler
Messages postés
12
Date d'inscription
lundi 17 février 2014
Statut
Membre
Dernière intervention
27 mai 2014
-
Messages postés
12
Date d'inscription
lundi 17 février 2014
Statut
Membre
Dernière intervention
27 mai 2014
-
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

Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 377
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


;-))
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
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 377
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 ;-))
Messages postés
12
Date d'inscription
lundi 17 février 2014
Statut
Membre
Dernière intervention
27 mai 2014

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