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 :

En script shell, comment générer un nom de variable ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut En script shell, comment générer un nom de variable ?
    Bonjour, je souhaite utiliser une variable en fonction d'une autre comme c'est décrit dans le code ci-dessous.

    Je ne veux pas avoir recours à un tableau (sauf si bash supporte les tableaux associatifs, mais il ne me semble pas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
    
    PATCHES_UN="foo_1 \
               bar_1 \
               foobar_1"
                 
    PATCHES_DEUX="foo_2 \
               bar_2 \
               foobar_2"
    
    ID="UN"
    
    FOO=${PATCHES_$ID} # C'est là que je ne sais pas comment faire
                  
    for files in ${FOO}; do
      echo "-> $files"
    done
    Merci pour vos suggestions.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par valefor Voir le message
    Bonjour, je souhaite utiliser une variable en fonction d'une autre comme c'est décrit dans le code ci-dessous.

    Je ne veux pas avoir recours à un tableau (sauf si bash supporte les tableaux associatifs, mais il ne me semble pas).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
    
    PATCHES_UN="foo_1 \
               bar_1 \
               foobar_1"
                 
    PATCHES_DEUX="foo_2 \
               bar_2 \
               foobar_2"
    
    ID="UN"
    
    FOO=${PATCHES_$ID} # C'est là que je ne sais pas comment faire
                  
    for files in ${FOO}; do
      echo "-> $files"
    done
    Merci pour vos suggestions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NAME="PATCHES_"$ID
    FOO=${!NAME}
    l'astuce c'est le ! …

  3. #3
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Merci pour votre aide. J'avais vu le "!" sur des exemples de ce genre de choses, mais je n'arrivais pas à me convaincre que c'était LA solution. Vous confirmez donc cet usage...

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

Discussions similaires

  1. Générer un nom de variable unique via une macro
    Par Drannor dans le forum Débuter
    Réponses: 4
    Dernier message: 04/03/2011, 13h43
  2. Générer des noms de variables à la volée
    Par Guillaume_Caldera dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2009, 18h07
  3. script shell perte de valeurs de mes variables.
    Par driden91 dans le forum Linux
    Réponses: 5
    Dernier message: 16/10/2007, 02h07
  4. Générer un nom de variable
    Par Belouda dans le forum MATLAB
    Réponses: 8
    Dernier message: 05/06/2007, 16h14
  5. Comment connaitre les noms de variables
    Par gwendy dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2006, 11h51

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