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

Shell et commandes GNU Discussion :

Problème avec la substitution de commandes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut Problème avec la substitution de commandes
    Bonjour à tous,

    je rencontre un problème de substitution de commandes. J'ai plusieurs variables nommées j1, j2, j3, j4 ...

    J'ai une variable nommée n et grâce à n je voudrais déréférencer j1, j2, ... jn. Pour faire ça, j'utilise la commande eval. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ j1=toto
    $ n=1
    $ eval echo \$j${n}
    toto
    Donc ça marche. Maintenant je voudrais stocker la résultat de cette commande dans la variable J. Je fais donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ J=`eval echo \$j${n}`
    $ echo $J
    1
    Et là je ne comprends pas pourquoi j'ai 1 dans J alors que j'ai bien toto dans stdout !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ eval echo \$j${n} > /tmp/toot
    $ cat /tmp/toot
    toto
    Maintenant en utilisant $ ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ J=$(eval echo \$j${n})
    $ echo $J
    toto
    Quelqu'un peut il m'expliquer:
    - la différence entre $() et ``
    - pourquoi ça ne marche pas avec ``

    Merci !

    Laurent

    Edit: ortho

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    Bonjour,

    il semblerait que l'anti-slash n'est pas interprété de la même manière : il faut le protéger entre `` : J=`eval echo \\$j$n`.

    deux remarques :
    - pourquoi une forme ancienne de substitution de commande ?
    - es-tu sûr de la pertinence de numéroter tes variables (si c'est pour du bash, utilise plutôt un tableau) ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre habitué
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    il semblerait que l'anti-slash n'est pas interprété de la même manière : il faut le protéger entre `` : J=`eval echo \\$j$n`.
    Effectivement, comme ça, ça marche. C'est documenté quelque part que l'\ ne marche pas pareil avec `` que partout ailleurs ?

    Citation Envoyé par N_BaH Voir le message
    deux remarques :
    - pourquoi une forme ancienne de substitution de commande ?
    habitude

    Citation Envoyé par N_BaH Voir le message
    - es-tu sûr de la pertinence de numéroter tes variables (si c'est pour du bash, utilise plutôt un tableau) ?
    Je suis sûr que ce n'est pas pertinent C'est juste pour tester ...

    Merci !

    Laurent

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    oui, ici, il me semble.

    et une façon intéressante de faire ici
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre habitué
    Homme Profil pro
    Architecte Sécurité
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte Sécurité

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut
    merci beaucoup N_BaH !

    Laurent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec condition WHERE dans commande SELECT
    Par Badouba76 dans le forum Objective-C
    Réponses: 3
    Dernier message: 08/11/2013, 18h19
  2. Problème avec l'invite de commande de VS
    Par jlm22 dans le forum Visual Studio
    Réponses: 7
    Dernier message: 27/12/2010, 08h14
  3. [Batch] Problème avec l'invite de commande Windows 7 commande format
    Par Feitan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 22/11/2010, 14h48
  4. [Hook] Problème avec l'exécution de commandes SVN
    Par Modena dans le forum Subversion
    Réponses: 0
    Dernier message: 11/08/2008, 15h02
  5. problème avec les lignes de commande
    Par Heavy Metal Hero dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 11/06/2007, 11h39

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