Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Appel à contributeurs pour la doc.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 16/05/2017, à 12:28

abelthorne

[résolu] Obtenir la valeur d'une variable construite ?

Bonjour,
J'essaie de faire un script et je suis empêtré dans la manipulation des variables. Disons que j'ai l'exemple basique suivant :

#!/bin/bash

function test{
couleur_rouge=ff0000
couleur_vert=00ff00
couleur_bleu=0000ff

echo xxx
}

test vert

La fonction test récupère donc "vert" dans $1. Par quoi est-ce qu'il faudrait que je remplace "xxx" dans echo pour qu'il m'affiche ce qui suit ?

00ff00

Au mieux, j'arrive à affiche "vert" ou "couleur_vert" mais pas la valeur de $couleur_vert...

Question subsidiaire : est-ce que c'est possible en bash de créer des tableaux avec des index non numériques ? Quelque chose du genre :

couleur[rouge]=ff0000
couleur[vert]=00f000
couleur[bleu]=0000ff

Dernière modification par abelthorne (Le 16/05/2017, à 13:48)

Hors ligne

#2 Le 16/05/2017, à 12:50

pingouinux

Re : [résolu] Obtenir la valeur d'une variable construite ?

Bonjour,
Pour ta première question

function montest(){
couleur_rouge=ff0000
couleur_vert=00ff00
couleur_bleu=0000ff

var=couleur_$1
echo "$var=${!var}"
}
montest vert
montest rouge
montest bleu

La réponse à la question subsidiaire est oui (voir les tableaux associatifs).

Ajouté :

montest2(){
declare -A tab
tab[rouge]=ff0000
tab[vert]=00ff00
tab[bleu]=0000ff

var=$1
echo "$var => ${tab[$var]}"
}
montest2 vert
montest2 rouge
montest2 bleu

Dernière modification par pingouinux (Le 16/05/2017, à 12:57)

Hors ligne

#3 Le 16/05/2017, à 13:17

abelthorne

Re : [résolu] Obtenir la valeur d'une variable construite ?

Ah, super, avec les tableaux ça me simplifie la vie.

Pour ta réponse à la première question, je ne comprends pas bien la syntaxe de echo "$var=${!var}" : à quoi correspond le point d'exclamation ?

Hors ligne

#4 Le 16/05/2017, à 13:45

pingouinux

Re : [résolu] Obtenir la valeur d'une variable construite ?

Voici un extrait de man bash, rubrique Parameter Expansion :

If the first character of parameter is an exclamation point (!), it introduces a level
       of  variable indirection.  Bash uses the value of the variable formed from the rest of
       parameter as the name of the variable; this variable is then expanded and  that  value
       is  used  in  the rest of the substitution, rather than the value of parameter itself.
       This is known as indirect expansion.

Hors ligne

#5 Le 16/05/2017, à 13:47

abelthorne

Re : [résolu] Obtenir la valeur d'une variable construite ?

Ok. Merci, c'est donc le point de détail qu'il me manquait depuis le début. smile

Dernière modification par abelthorne (Le 16/05/2017, à 13:47)

Hors ligne