Substitution de variable

Daniel Caillibaud ml at editionsdidier.com
Fri Feb 16 10:47:59 CET 2007


Guillaume Desclaux wrote:
> Daniel Caillibaud wrote:
>> Ca incite à poser une question bête : comment faire du ${$a} en bash ?
>>
>> du genre
>> a=toto; b=a; echo ${$b}
>> qui renverrai toto...
> 
> et si tu faisais
> 
> i=0
> for arg in "$@"; do
>     parameters[$i]=$arg
>     i=`expr $i + 1`
> done
> 
> Tu peux ensuite faire
> b=1
> echo ${parameters[$b]}
> 
> Ca te va ?

Apparemment (j'ai lu pas mal de truc, dont http://www-phase.c-strasbourg.fr/inform/linux/cours/user/node12.html#SECTION001254000000000000000 avec un 
tableau qui résume bien), il n'y a pas de solution directe à un nom de variable lui-même variable, comme dans

 >$ a=toto; b=tata; c=titi; var=b; echo ${${var}}
bash: ${${var}}: bad substitution

mais ta solution permet de contourner le pb en utilisant des index

 >$ val[0]=toto; val[1]=tata; val[2]=titi; i=2; echo ${val[$i]}
titi

et on peut même avoir des clés alphanumérique
 >$ val[a]=toto; val[b]=tata; val[c]=titi; var=b; echo ${val[$var]}
titi

Ce qui répond à mon pb initial.

-- 
Daniel


More information about the Shell mailing list