[résolu] variables en bash

Bonjour à tous,

J’ai un petit script en bash à écrire qui consiste en gros en ceci:
j’ai des variables de ce genre affectées en début de script:
variable_1=xxx
variable_2=yyy

j’ai une fonction ma_fonc qui prend un argument.
et j’aimerais que cette fonction fonctionne de cette manière:

ma_fonc 1 doit renvoyer xxx
ma_fonc 2 doit renvoyer yyy

Or en fait je ne peux pas faire
function ma_fonc
{
echo $variable_$1
}

j’ai essayé plein d’autres syntaxes (avec quotes, doubles quotes, etc), mais pour l’instant je n’ai pas de solution.

merci pour toute aide :slightly_smiling:

Salut,

echo $variable_1 serait plus exact :slightly_smiling:

les nombre entier à la fin de variable_ est incrémenté, c’est pour cela que faire des echo variable_1 ou variable_2 n’est pas une option viable :confused:

je m’auto-répond:

en ksh cela donne

nameref variable_pointe=variable_$1 echo $variable_pointe

Il n’y a pas de tableau en bourne shell ?

Y’a sûrement plus simple, mais vu que j’y suis allé à tâtons faudra se contenter de ça pour le moment… :mrgreen:

[code]VAR1=variable1
VAR2=variable2
INDEX=1
RESULTAT="$(eval echo “$(echo $VAR$INDEX)”)"
echo $RESULTAT

affiche: variable1

INDEX=2
RESULTAT="$(eval echo “$(echo $VAR$INDEX)”)"
echo $RESULTAT

affiche: variable2[/code]

Malheureusement je crois que non. En Bash oui mais pas en shell posix (d’après l’opengroup).

Re,

Que cela ne t’empêche pas de cliquer sur la coche verte signifiant RESOLU sur ce forum :slightly_smiling:

Malheureusement je crois que non. En Bash oui mais pas en shell posix (d’après l’opengroup).[/quote]
:unamused: ben il faudrait savoir car l’intitulé de ton fil est “variables en bash

toujours est il que :

$ bash --posix -c 'variable_1="V1";variable_2="v2";for a in 1 2; do v=variable_$a;echo ${!v};done' V1 v2

merci pour vos réponses. Je me suis contenté de ça en ksh:

nameref variable_pointe=variable_$1
echo $variable_pointe

et en bash par contre il faudrait faire:

variable_pointe=variable_$1
echo ${!variable_pointe}

Tant qu’à faire autre chose que du bourne shell, autant faire propre :

[code]variable[1]=xxx
variable[2]=yyy

function ma_fonc
{
echo ${variable[$1]}
}

ma_fonc 1 # renvoie xxx
ma_fonc 2 # renvoie yyy[/code]
La syntaxe est la même en ksh et en zsh.