Tom's Guide > Forum > Programmation > un peu compliquer : valeur de variable servant comme nom de variable.

un peu compliquer : valeur de variable servant comme nom de variable.

Forum Programmation : un peu compliquer : valeur de variable servant comme nom de variable.

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

bonjour,
ben ce que je veut est impeu compliquer à dire : c'est pour un script shell->linux.
dans un scrip (par ex mon_script).
j'ai une variable par ex: var_temp
on a un moment (par ex), var_temp=1
lorsque j'appelle mon script
j'entre la ligne de commande mon_script var1 var2.
ben la je veux affichier la variable 1 (var1)
non pas en faisant "echo $1".
mais echo $+"$var_temp". je ne sais pas comment le dire mais en fait je veux concatainer '$' avec la valeur de '$var_temp' pour donner un équivalent a '$1' (car '$var_temp'=1)
voila je ne sais pas si vous avez compri mais a mon avis ceux qui ont la réponse vont comprendre ;-)
voila merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

c'est possible en php, mais avec {a, ba, c, k, z}sh je crois pas ... en tout cas, rien trouvé de tel sur le grand ternet ...

Répondre à lissyx

C'est des variables dynamiques je crois!
En php,
$var1 = 'salut';
$$var1 = 'toi';

echo "$var1 $$var1" revient à echo "$var1 $salut";
donc affiche // salut toi
ca s'ecrit ${$var1} aussi!

Donc bon, si c'est ca que tu cherche, c'est sur les variables dynamiques qu'il faut chercher de la doc!
Et en bash, j'ai jamais vu!

Répondre à mr_keyser

excuse moi mais dans unscript shell lorsque l'on essai $$var1, on a une erreur. (C'est sous linux). De plus ce n'est pas exactement ça que je veut.
je voudrai fait un echo de la variable $1 ou $2 ou $3 en fonction de la valeur de $var1.
si $var1 = 1 => echo $1.
si $var1 = 2 => echo $2.
si $var1 = 3 => echo $3.
voila, mais je voudrai savoir si il n'y a pas un équivalent a ce que je vient d'écrir sur une seul ligne.
car si je prend la valeur de var1 (1, 2 ou3) que je concatène (colle) avec "$", j'obtient $1, $2 ou $3.
en fait je précalule la valeur de $var1 pour l'ajouter dans le programme. (dit comme ça, il me semble que c'est pas possible mais je suis présque certain d'avoir déja vu ça.

Répondre à habibdu70

ca existe pas les switch en bash?

Répondre à mr_keyser

Citation :


habibdu70 a écrit :
excuse moi mais dans unscript shell lorsque l'on essai $$var1, on a une erreur. (C'est sous linux). De plus ce n'est pas exactement ça que je veut.
je voudrai fait un echo de la variable $1 ou $2 ou $3 en fonction de la valeur de $var1.
si $var1 = 1 => echo $1.
si $var1 = 2 => echo $2.
si $var1 = 3 => echo $3.
voila, mais je voudrai savoir si il n'y a pas un équivalent a ce que je vient d'écrir sur une seul ligne.
car si je prend la valeur de var1 (1, 2 ou3) que je concatène (colle) avec "$", j'obtient $1, $2 ou $3.
en fait je précalule la valeur de $var1 pour l'ajouter dans le programme. (dit comme ça, il me semble que c'est pas possible mais je suis présque certain d'avoir déja vu ça.



c'est bien ce qu'on te dis, et ça semble pas possible en bash.

les switch, en bash, il me semble que ça existe.

Répondre à lissyx

* #!/usr/bin/bash
* # Script : choix.sh
*
* PS3="Que voulez vous ? "
* select choix in \
* "Premier choix" \
* "Second choix" \
* "Abandon"
* do
* case $REPLY in
* 1) echo "C'est du premier choix :" ;;
* 2) echo "Ce n'est que du second choix !" ;;
* 3) echo "On abandonne ..."
* break ;;
* *) echo "Choix invalide" ;;
* esac
* done


un exemple de script bash, avec un switch!

Répondre à mr_keyser

super merci Mr_Keyser
moi je suis un "pro" "programme le plus court possible"
et je pense que le case est la meilleur solution
merci.

Répondre à habibdu70
Tom's Guide > Forum > Programmation > un peu compliquer : valeur de variable servant comme nom de variable.
Aller à :

Il y a 573 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens