Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1648 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Subtituer le nom d'une variable par son contenu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Subtituer le nom d'une variable par son contenu

n°981181
guda
Posté le 14-02-2005 à 16:05:37  profilanswer
 

Je voudrais faire un truc de ce genre  
 

Code :
  1. VERSION="LOT3"
  2. LIVRAISON_LOT3="oui"
  3. echo ${echo "LIVRAISON_"$VERSION}


 
et que le resultat me renvoi "oui".  
 
Pour etre plus clair, j'ai une chaine et une variable (LIVRAISON_"$VERSION) qui doivent devenir une variable LIVRAISON_LOT3  
 
Comment faire ?

mood
Publicité
Posté le 14-02-2005 à 16:05:37  profilanswer
 

n°981882
couak
Posté le 15-02-2005 à 10:03:36  profilanswer
 

Code :
  1. eval echo \$`echo LIVRAISON_$VERSION`

n°988548
Carott'
Posté le 21-02-2005 à 14:55:42  profilanswer
 

je voulais juste vous dire merci tous les 2, ca fait des plombes que je cherche à faire exactement la même chose !!
Merci donc :-) (ca marche!)

n°988632
couak
Posté le 21-02-2005 à 15:50:56  profilanswer
 

c'est qui les deux ? il n'y a que moi qui ait répondu ;)

n°988642
Carott'
Posté le 21-02-2005 à 16:10:40  profilanswer
 

merci à toi et à celui qui a posé la question que j'avais en tête!!!  
Sans lui tu n'y aurais jamais répondu ;) ;)

n°988643
couak
Posté le 21-02-2005 à 16:12:07  profilanswer
 

ah ok :jap:

n°988666
Carott'
Posté le 21-02-2005 à 16:31:06  profilanswer
 

ben tiens tant que tu es là, pourrais tu encore m'aider s'il te plait?
Dans mon cas, le résultat de la commande que tu nous as fournie doit me donner un mot de passe, que je souhaite utiliser pour faire un ftp:
 
ftp -n adresse << !
user $user motdepasse
....
!
Comment faire pour integrer le resultat de cette grande commande dans une autre commande?!!


Message édité par Carott' le 21-02-2005 à 16:33:08
n°988751
couak
Posté le 21-02-2005 à 17:05:47  profilanswer
 

pour appeler une autre commande, tu peux faire un eval ou mettre la commande enter backstick :

Code :
  1. eval "commande"
  2. `commande`


par contre pour le client FTP de base je ne suis pas sûr qu'il soit possible de by-passer le mode interactif, à tester

n°988790
Carott'
Posté le 21-02-2005 à 17:18:15  profilanswer
 

si on reprend l'exemple de guda, il faudrait que je fasse:
ftp -n adresse << !  
user $user `eval echo \$`echo LIVRAISON_$VERSION``  
....  
!  
??  
Mais ca ne marche pas...
Et si je veux faire rentrer eval echo \$`echo LIVRAISON_$VERSION` dans une variable je devrais faire:
mot_de_passe=`eval echo \$`echo LIVRAISON_$VERSION`` ??
Ca marche pas non plus!  :sweat:


Message édité par Carott' le 21-02-2005 à 17:18:42
n°988799
couak
Posté le 21-02-2005 à 17:25:47  profilanswer
 

vérifie en ligne de commande sans faire de script, moi je pense que ca bloque car le mot de passe doit être saisie en mode intéractif

mood
Publicité
Posté le 21-02-2005 à 17:25:47  profilanswer
 

n°988865
Carott'
Posté le 21-02-2005 à 17:50:52  profilanswer
 

non, ca marche avec le mot de passe directement en ligne de commande sans passer par l'interactif.
En fait, sans parler de ftp, si je fait  
mot_de_passe=`eval echo \$`echo LIVRAISON_$VERSION``  
puis
echo $mot_de_passe
il gueule: ksh: LIVRAISON_LOT3:  not found
alors que j'ai bien déclaré toutes les variables :-(

n°989494
couak
Posté le 22-02-2005 à 09:05:41  profilanswer
 

Code :
  1. mot_de_passe=`eval echo '$LIVRAISON_LOT'$VERSION`

n°989548
Carott'
Posté le 22-02-2005 à 10:17:00  profilanswer
 

Merci couak, t'es trop fort! Ca marche enfin.

n°992367
Sve@r
Posté le 24-02-2005 à 13:49:47  profilanswer
 

couak a écrit :

Code :
  1. eval echo \$`echo LIVRAISON_$VERSION`



 
Bonjour couak,
c'est totalement inutile de mettre un "echo" entre backquottes. Le shell exécute l'instruction placée entre les backquottes et remet le résultat affiché par l'instruction à la place.
Ce serait comme faire

Code :
  1. `echo date`


au lieu de taper directement

Code :
  1. date


 
Autrement dit, la syntaxe

Code :
  1. eval echo \$`echo LIVRAISON_$VERSION`

peut être utilement réduite en

Code :
  1. eval echo \$LIVRAISON_$VERSION

 ;)

n°992386
couak
Posté le 24-02-2005 à 13:54:10  profilanswer
 

Sve@r a écrit :

Bonjour couak,
c'est totalement inutile de mettre un "echo" entre backquottes. Le shell exécute l'instruction placée entre les backquottes et remet le résultat affiché par l'instruction à la place.
Ce serait comme faire

Code :
  1. `echo date`


au lieu de taper directement

Code :
  1. date


 
Autrement dit, la syntaxe

Code :
  1. eval echo \$`echo LIVRAISON_$VERSION`

peut être utilement réduite en

Code :
  1. eval echo \$LIVRAISON_$VERSION

 ;)


effectivement :) je m'en souviendrai la prochaine fois que je ferais du shell ;)

n°1278841
azubal
Posté le 07-01-2006 à 20:01:21  profilanswer
 

bon, je me reponds a moi meme... ( cest toujours quand on fini par demander la question qu'on trouve...)
 


foo=2;
eval "out=\$$foo";
echo $out; #affiche l'argument 2


 
 
Merci moi  :pt1cable:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Subtituer le nom d'une variable par son contenu

 

Sujets relatifs
Modifier (et non remplacer) contenu d'un fichier texteVariable php a trouvé et maté !!!! (aide)
Recuperation d'une variable provenant d'une mapComment passer une zone filtrée dans une variable de type range
Comment faire 1 variable en rassemblant 1texte et 1 variableEffacer le contenu d'un dossier ?
fsockopen et passage de variable postProbleme perte de variable en sortie de boucle
VBS définir / modifier une variable d'environnement[HTML/JS/PHP] accèder à une variable d'un formulaire
Plus de sujets relatifs à : Subtituer le nom d'une variable par son contenu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR