# \[résolu\] variables en bash

**URL:** <https://www.debian-fr.org/t/resolu-variables-en-bash/34902>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902 "2016-02-21T03:52:27Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![tiresias](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/c0e974/32.png) [@tiresias](https://www.debian-fr.org/u/tiresias)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/1 "2016-02-21T03:52:27Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/2 "2016-02-21T03:52:27Z")

</div>

Salut,

echo $variable\_1 serait plus exact 🙂

---

<div class="post-metadata">

**Author:** ![tiresias](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/c0e974/32.png) [@tiresias](https://www.debian-fr.org/u/tiresias)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/3 "2016-02-21T03:52:27Z")

</div>

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 😕

---

<div class="post-metadata">

**Author:** ![tiresias](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/c0e974/32.png) [@tiresias](https://www.debian-fr.org/u/tiresias)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/4 "2016-02-21T03:52:29Z")

</div>

je m’auto-répond:

en ksh cela donne

`
nameref variable_pointe=variable_$1
echo $variable_pointe`

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/5 "2016-02-21T03:52:29Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/6 "2016-02-21T03:52:29Z")

</div>

Y’a sûrement plus simple, mais vu que j’y suis allé à tâtons faudra se contenter de ça pour le moment… ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

[code]VAR1=variable1  
VAR2=variable2  
INDEX=1  
RESULTAT=«&nbsp;$(eval echo «&nbsp;$(echo $VAR$INDEX)&nbsp;»)&nbsp;»  
echo $RESULTAT

# affiche: variable1

INDEX=2  
RESULTAT=«&nbsp;$(eval echo «&nbsp;$(echo $VAR$INDEX)&nbsp;»)&nbsp;»  
echo $RESULTAT

# affiche: variable2[/code]

---

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/7 "2016-02-21T03:52:31Z")

</div>

> [@MisterFreez](#):
>
> Il n’y a pas de tableau en bourne shell ?

Malheureusement je crois que non. En Bash oui mais pas en shell posix (d’après l’[opengroup](http://pubs.opengroup.org/onlinepubs/9699919799/)).

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/8 "2016-02-21T03:52:31Z")

</div>

Re,

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

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/9 "2016-02-21T03:52:31Z")

</div>

> [@branch](#):
>
> [quote=«&nbsp;MisterFreez&nbsp;»]Il n’y a pas de tableau en bourne shell ?

Malheureusement je crois que non. En Bash oui mais pas en shell posix (d’après l’[opengroup](http://pubs.opengroup.org/onlinepubs/9699919799/)).[/quote]  
😒 ben il faudrait savoir car l’intitulé de ton fil est «&nbsp;variables en bash&nbsp;»

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
`

---

<div class="post-metadata">

**Author:** ![tiresias](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/c0e974/32.png) [@tiresias](https://www.debian-fr.org/u/tiresias)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/10 "2016-02-21T03:52:37Z")

</div>

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

```auto
nameref variable_pointe=variable_$1
echo $variable_pointe
```

et en bash par contre il faudrait faire:

```auto
variable_pointe=variable_$1
echo ${!variable_pointe}
```

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/resolu-variables-en-bash/34902/11 "2016-02-21T03:52:37Z")

</div>

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.
