[shell]recuperer la valeur d'une variable dans une variabe

recuperer la valeur d'une variable dans une variabe [shell] - Shell/Batch - Programmation

Marsh Posté le 18-01-2005 à 20:25:08    

en clair ...
 
#!/bin/sh                                                                              
 
a1=4
a2=5
a3=6
 
for j in 1 2 3
do
  echo a${j}
done
 
le but, recuperer la valeur dans la variable
c possible ?
 
 
 :hello:

Reply

Marsh Posté le 18-01-2005 à 20:25:08   

Reply

Marsh Posté le 18-01-2005 à 20:34:49    

si j'ai pas ete clair, la le script affiche  
a1
a2
a3
et faudrai afficher  
4
5
6

Reply

Marsh Posté le 18-01-2005 à 22:15:28    

Code :
  1. #!/bin/sh                                                             
  2. a1=4
  3. a2=5
  4. a3=6
  5. for j in a1 a2 a3
  6. do
  7. echo ${j}
  8. done


 
Là, j prend tour à tour la valaur a1 puis a2 et enfin a3
Donc le résultat sera :
 

Code :
  1. 4
  2. 5
  3. 6


Reply

Marsh Posté le 18-01-2005 à 23:40:21    

IsBack a écrit :

Code :
  1. #!/bin/sh                                                             
  2. a1=4
  3. a2=5
  4. a3=6
  5. for j in a1 a2 a3
  6. do
  7. echo ${j}
  8. done


 
Là, j prend tour à tour la valaur a1 puis a2 et enfin a3
Donc le résultat sera :
 

Code :
  1. 4
  2. 5
  3. 6



merci pr ta reponse :)
 
mais c contourner le pb, la c un exemple simple pour pouvoir le reutiliser ds des cas plus complexe ;)
sinon, la solution  
 
eval echo \$a${j}
et la ca marche  :sol:

Reply

Marsh Posté le 19-01-2005 à 06:06:50    

eval echo \$a$j si tu veux juste afficher, eval s=\$a$j si tu veux affecter le résultat à s... Enfin tu vois l'idée, faut utiliser eval.
 
Edit : j'avais pas vu que tu avais trouvé


Message édité par matafan le 19-01-2005 à 06:07:37
Reply

Marsh Posté le 19-01-2005 à 13:45:57    

matafan a écrit :

eval echo \$a$j si tu veux juste afficher, eval s=\$a$j si tu veux affecter le résultat à s... Enfin tu vois l'idée, faut utiliser eval.
 
Edit : j'avais pas vu que tu avais trouvé


 :jap:

Reply

Marsh Posté le 19-01-2005 à 13:58:46    

IsBack a écrit :

Code :
  1. #!/bin/sh                                                             
  2. a1=4
  3. a2=5
  4. a3=6
  5. for j in a1 a2 a3
  6. do
  7. echo ${j}
  8. done


 
Là, j prend tour à tour la valaur a1 puis a2 et enfin a3
Donc le résultat sera :
 

Code :
  1. 4
  2. 5
  3. 6



 
Heu, ça va plutôt afficher a1 a2 a3 non ? [:petrus75]  
 
 
Sinon, la structure de données utilisée n'est pas très adaptée : il serait plus logique d'utiliser un tableau.
 

Code :
  1. #!/bin/sh
  2. a=(4 5 6)
  3. for j in ${a

    • }
    • do
    •   echo ${j}
    • done


 

Reply

Sujets relatifs:

Leave a Replay

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