Script Unix : variable imbriquée , HELP! - Programmation
Marsh Posté le 22-02-2002 à 11:44:43
bah.....galère!!
Mais si tu trouves, ça m'intéresse...
Essaie de voir si il n'y a pas moyen de créer des tableaux opu des listes (y'a pas de raison qu'on puisse pas.)
Mais la variable imbriquée, vu que c'est un langage de script, y'a pas moyen : y'a qu'une passe d'interprétation : donc, ${${toto}} il peut pas comp^rendre : il va interpreter les $intérieur, et se retrouver comme un con avec son 2° $....
Marsh Posté le 25-02-2002 à 13:39:19
avec expr ya pas moyen de s'en sortir?
par exemple:
var="\$var${i}"
valeur=`expr $var`
ou diectement : valeur=`expr "\$var${i}"`
[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 13:54:57
Ca a pas marché.
J'ai fait
VER_F021=v1.2
VER_F022=v1.4
etc...
for func in 021 022 023 etc...
do
var="\$VER_F${func}"
valeur=`expr $var`
echo $valeur
done
on a var=$VER_F021
mais echo $valeur affiche $VER_F021.
Merci quand meme
Marsh Posté le 25-02-2002 à 13:59:36
Il semble qu'avec eval, ca marche un peu mieux:
meme exemple:
for func in 021 022 023 etc...
do
var="\$VER_F${func}"
valeur=`eval $var`
echo $valeur
done
il affiche (lorsqu'il execute la ligne valeur=`eval $var`) v1.2 not found. Il a donc reussi a trouver la valeur. Cependant, il n'a pas affecté le resultat a valeur. donc le dernier echo n'affiche rien.
Encore un peu d'aide SVP, on n'y est presque.
Merci d'avance.
Marsh Posté le 25-02-2002 à 13:59:41
essaye valeur=`expr "$var"`
pour forcer l'interprétation de $var
ou éventuellement avec des simples quotes
ou essaye avec eval à la place de expr : eval "$var"
[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 14:12:27
on dirait qu'il essaie de trouver une variable du nom "v1.2" avec eval
Marsh Posté le 25-02-2002 à 14:16:42
si tu mets direct : eval "\$VER_F${func}" , avec ou sans les doubles quotes, ca donne quoi ?
[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 14:35:55
j'ai trouvé ca par Google:
http://www.multimania.com/bombjack [...] comm_e.htm
Citation : Normalement une ligne de saisie n'est éxécutée qu'une seule fois. Mais si une variable contient le nom d'une autre variable, une exploitation unique ne suffit pas. Pour voir le contenu de la seconde variable, il faut éxécuter une deuxième fois cette ligne. |
Marsh Posté le 25-02-2002 à 14:37:09
et ca pas mal aussi :
http://www.irit.fr/ACTIVITES/EQ_TC [...] /td15.html
Marsh Posté le 25-02-2002 à 14:37:53
avec l'exemple qui va bien ::
a=1
c=a
a1=3
eval b=\$$c$a
echo $b
ca devrait te convenir
[jfdsdjhfuetppo]--Message édité par jupiler--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 15:03:13
___ __ __ °
|\ /| | | \ / |
| \/ | |--- |__/ | |
| | |___ | \ \__ |
Marsh Posté le 25-02-2002 à 15:06:41
il t'a fallut 26 minutes pour dessiner ca ?
Marsh Posté le 22-02-2002 à 11:25:25
Bonjour,
voici en gros ce que j'aimerais faire:
var1=val1
var2=val2
var3=val3
for i in 1 2 3
do
traitement sur ${var${i}}
done
${var${i}}, ca marche pas. Comment on fait? (je suis en bash)
merci d'avance.