Script Unix : variable imbriquée , HELP!

Script Unix : variable imbriquée , HELP! - Programmation

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.

Reply

Marsh Posté le 22-02-2002 à 11:25:25   

Reply

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° $....

Reply

Marsh Posté le 22-02-2002 à 16:29:53    

Personne n'a d'idée?
Une alternative?

Reply

Marsh Posté le 25-02-2002 à 13:20:57    

:bounce:

Reply

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

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

Reply

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.

Reply

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 25-02-2002 à 14:12:27    

on dirait qu'il essaie de trouver une variable du nom "v1.2" avec eval

Reply

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 25-02-2002 à 14:16:42   

Reply

Marsh Posté le 25-02-2002 à 14:33:10    

meme resultat

Reply

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.
 
Les caractères spéciaux qui ne sont à exploiter qu'une fois doivent éventuellement être masqués. Une utilisation répétée d'eval est possible.
 


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 25-02-2002 à 14:37:09    

et ca pas mal aussi :
 
http://www.irit.fr/ACTIVITES/EQ_TC [...] /td15.html


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

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]


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 25-02-2002 à 15:03:13    

___   __     __   °
|\  /|  |     |  \   /     |
| \/ |  |---  |__/  |      |
|    |  |___  |  \   \__   |

Reply

Marsh Posté le 25-02-2002 à 15:04:26    

Ca aurait du ressembler a un "merci"

Reply

Marsh Posté le 25-02-2002 à 15:06:41    

il t'a fallut 26 minutes pour dessiner ca ? :lol:


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed