Salut !
J'ai une question qui me hante depuis un petit bout de temps.
Voila mon probleme :
J'ai deux variables :
[code]
foo="foo"
bar="bar"
[/code]
Et dans mon script une autre variable va prendre comme valeur suivant certaines conditions le nom soit de la premiere variable soit de la seconde variable.
ex :
[code] [ "$machin" == "truc bidule" ] && var="foo" [/code]
Et dans la suite de mon code j'aimerais pouvoir affichier la valeur de la variable dont le nom est dans la variable 'var'.
du genre :
[code] echo $$var [/code]
(je sait ça marche pas. C'est un exemple)
J'espere que mon argumentation est claire :| et que je n'est pas perdu tout le monde.
Bon ben voila mon petit probleme.
Si quelqu'un a une suggestion.
# Tu es sur ?
Posté par phoenix (site web personnel) . Évalué à 1.
Essai de faire ${$var}
Je n'ai pas de shell sous la main pour tester ca (on bosse pas forcément avec les outils qu'on veut)
# Une méthode
Posté par Damien Pobel (site web personnel) . Évalué à 2.
damien@Ubuntu ~ $ var="yo"
damien@Ubuntu ~ $ yo="pas yo"
damien@Ubuntu ~ $ echo "\$$var"
damien@Ubuntu ~ $ eval echo "\$$var"
https://damien.pobel.fr
[^] # Re: Une méthode
Posté par Damien Pobel (site web personnel) . Évalué à 3.
damien@Ubuntu ~ $ var="yo"
damien@Ubuntu ~ $ yo="pas yo"
damien@Ubuntu ~ $ echo "\$$var"
$yo
damien@Ubuntu ~ $ eval echo "\$$var"
pas yo
c'est plus clair comme ça :)
https://damien.pobel.fr
# indirection.
Posté par xavier . Évalué à 1.
X=value
INDIR=X
echo ${!INDIR}
value
version courte de l'eval qui evite de repasser par toute les phases d'expansions, substitutions etc.
# un peu plus compliquer
Posté par Bashful . Évalué à 1.
Et si au lieu d'affichier la variable dont on connais que le nom ou veux modifier sa valeur :
du genre :
#!/bin/bash
foo="foo"
[ true ] && var="foo"
#echo "\$$var"
#eval echo "\$$var"
#echo ${!var}
#si je veux mettre la valeur "bar" dans foo
$var="bar"
eval echo "\$$var"
Bon je sait ça marche pas, mais j'ai tester pas mal de truc et je trouve pas.
Bash'
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.