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 :

sh - Traitement de n variables nommées avec une constante.


Sujet :

Linux

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut sh - Traitement de n variables nommées avec une constante.
    Bonjour à tous,

    Je vous expose mon problème;
    Dans un script sh je récupère 450 variables nommées comme suit :

    lgmt001=foo
    lgmt002=bar
    lgmt003=john
    lgmt004=doe
    lgmt005=thony
    lgmt006=luke
    lgmtxxx
    lgmt450=steven

    Je souhaite effectuer un traitement "y" sur le contenu de chaque.

    Avec cette méthode le comportement est bon, mais avec 450 variable ca commence à faire long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in "$lgmt001" "$lgmt002" "$lgmt003" "$lgmt004" "$lgmt005" "$lgmt006" "$lgmtxxx" ....... "$lgmt450"; 
    do echo "$i"; 
    done


    vu que dans chaque variable la chaine "lgmt" est une constante, Je préférerai faire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in $(seq -w 1 450); 
    do echo ${'lgmt'${i}};
    done
    Mon problème est là; "${'lgmt'${i}}" n'est pas interprété comme je le souhaite.

    Avez-vous une idée?

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Et avec cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in $(seq -w 1 450); 
    do touch `echo lgmt$i` ;
    done

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse,

    Dans ce cas non plus ca ne fonctionne pas,
    le résultat de ton code est "touch lgmt001" (création d'un fichier nommé lgmt001), je cherche à récupérer le contenu de la variable pas son nom.

    Merci.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 470
    Points
    19 470
    Par défaut
    Bonjour,

    Dans un script sh je récupère 450 variables
    ça devrait ne jamais arriver. d'ailleurs, comment en arrives-tu là ?

    Pourquoi ne pas effectuer le traitement à mesure de leur apparition ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Voici comment j'en arrive là :
    Les variable sont récupérées en post depuis un une page cgi qui contient 450 inputs identifiés lgmtxxx.

    le traitement doit donc être effectué par une seconde page cgi qui récupère les variable, pas de problème jusque là.

    Je cherche simplement un bout de code un peut plus propre que celui que je propose en 1er lieu.

    J'espère être clair.

    merci

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Je voulais arriver à quelque chose !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i in $(seq -w 1 450); 
    do
    echo 'lgmt'$i=$(( i*2 )) >> tmp.sh;
    done
    for i in $(seq -w 1 450); 
    do
    echo 'echo $lgmt'$i >> tmp.sh;
    done
    sh tmp.sh
    cat tmp.sh
    rm -f tmp.sh

  7. #7
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut je crois que je l'ai ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ V01=toto
    $ V02=tata
    $ for n in 01 02
    > do
    > echo \$V$n
    > eval echo \$V$n
    > done
    $V01
    toto
    $V02
    tata
    $
    Sinon tu peux peut etre recuperer tes variables dans un tableau ou par position si elles sont en parametre de ton script ...

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Jean.Cri1 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ V01=toto
    $ V02=tata
    $ for n in 01 02
    > do
    > echo \$V$n
    > eval echo \$V$n
    > done
    $V01
    toto
    $V02
    tata
    $
    Sinon tu peux peut etre recuperer tes variables dans un tableau ou par position si elles sont en parametre de ton script ...
    génial Jean.Cri1 Merci!
    J'suis un peu en retard mais Impeccable!

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

Discussions similaires

  1. [Débutant] Comparer variable image avec une picturebox
    Par geekploy dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/07/2014, 12h41
  2. Réponses: 2
    Dernier message: 12/10/2012, 11h23
  3. Réponses: 0
    Dernier message: 03/05/2011, 15h46
  4. [PHP 5.2] Récupérer une variable POST avec une variable comme nom
    Par bailamos dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 14h59
  5. Concaténation d'une variable avec une constante !
    Par zesavantfou dans le forum Langage
    Réponses: 6
    Dernier message: 29/11/2008, 18h16

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