IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

appeller des variables dont le nom est lui aussi une variable ?


Sujet :

Linux

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 49
    Points : 50
    Points
    50
    Par défaut appeller des variables dont le nom est lui aussi une variable ?
    Bonjour,

    alors voilà j'ai beaucoup d'appel à formuler et donc j'aimerais ne pas que mes variables soient effacées au fur et à mesure avant que je les utilise.

    Leurs noms doit donc changer au fur et à mesure.

    J'ai réussi à faire ce genre de chose mais je n'arrive pas à l'utiliser. Je m'explique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var1=blabla
    echo $var1
    blabla
    l'étape 1 est ok.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    export truevar$var1=123456789
    Pas d'erreurs. l'étape 2 fonctionne... mais ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $(truevar$var1)
    -bash: truevarblabla: command not found
    Ne fonctionne donc pas alors même que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $truevarblabla
    123456789
    fonctionne parfaitement.

    Pourriez-vous me dire comment m'extirper de ce sac de noeud ? J'ai essayé avec les différents guillemets et des parenthèses, crochets, etc... mais rien n'y fait vraiment ! Y a-t-il un problème dans la manière dont je manipule mes "$" ?

    Merci beaucoup à tous !

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    construire des noms de variables en utilisant des variables est une idée séduisante, mais qui mène vers une complication et une dangerosité que je n'exposerai pas.

    soit tu reconstruis ton algorithme
    soit tu utilises un tableau associatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare -A monTableauAsso
    var1=foo
    montableauAsso[$var1]=123
    var2=bar
    montableauAsso[$var2]=456
    ou un simple tableau indexé.

    faut voir...

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    Ok ,merci beaucoup !

    cependant, comment je fais pour utiliser la variable stockée ensuite ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $(monTableauAsso[$var1])
    -bash: monTableauAsso[foo]: command not found
    ne fonctionne donc pas et idem pour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $monTableauAsso[$var1]
    456[foo]
    En essayant avec des crochets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo ${monTableauAsso[$var1]}
    456
    echo ${monTableauAsso[$var2]}
    456
    Il y a donc un problème... :-/ peux-tu m'expliquer ce que je fais mal ?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    les tableaux associatifs doivent être déclarés explicitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test -n "${tableauAssociatif[0]}" && unset tableauAssociatif
    declare -A tableauAssociatif

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    declare -A tableau
    declare: usage: declare [afFirtx] [-p] [name[=value] ... ]
    Il semblerait donc que cette commande ne fonctionne pas.

    J'ai supposé donc que c'était plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    declare -a tableau
    qui elle ne me renvoie pas d'erreur. Est-ce bon ?

    Sinon j'ai essayé test -n puis unset ... mais le résultat est le même. je vais regarder tes liens mais là je ne sais pas s j'ai beaucoup de temps je vais peut-être essayer d'une autre manière si je ne trouve pas de solution avant cet après midi.

    Merci en tout cas de tes précieux conseils.

Discussions similaires

  1. renommer une variable dont le nom est incorrect
    Par AlexFred dans le forum SAS Base
    Réponses: 2
    Dernier message: 08/09/2010, 16h41
  2. Réponses: 2
    Dernier message: 20/05/2010, 21h29
  3. Réponses: 3
    Dernier message: 07/01/2010, 16h54
  4. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 11h20
  5. Réponses: 7
    Dernier message: 25/10/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo