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 :

recuperer une variable dans shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut recuperer une variable dans shell
    Bonjour,

    Voila mon problem:

    Dans fichier de configuration j'ai des parametre comme suit:

    OID1="xxxxxxxxxx"
    OID2="xxxxxxxxxx"

    et je pourrais avoir plusieurs..

    en plus j'ai un autre parametre:
    NB_OID=2 // le NB_OID est le nombre de OID dans mon fichier de conf.

    Dans mon script shell je fait ceci :
    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
     
     
    source param.cfg
    .
    .
    .
    VAR_STRING=""
    COUNT=0
    while [ "$COUNT" -lt "$NB_OID" ]
    do
       COUNT=$(($COUNT+1))
     
       if [ -n "$(OID${COUNT})" ]
       then
         $VAR_STRING="$VAR_STRING $OID$COUNT" // le but c pour des arguments en ligne pour une commande, et vu que je ne connais pas le nombre de OID dans le fichier de conf, j'essaye de les concatiner
       fi
    done
    le but de ceci $(OID${COUNT}) est d'avoir les valeurs de mes parametre dans le fichier de conf (OID1, OID2,.....).

    Le problem:
    Le OID${COUNT} renvoit bien OID1 ou OID2, par contre je n'arrive pas a avoir les valeurs de OID1 et OID2 (dans mon cas) ni les concatiner !!

    Merci pour votre aide

    Kass

  2. #2
    Membre expérimenté Avatar de SYL666
    Inscrit en
    Novembre 2003
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 308
    Par défaut
    Salut,

    Tu peux utiliser les tableau en bash aussi :

    Une version identique de ton script, mais en utilisant une boucle for ainsi que les tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    OID[1]="xxxx"
    OID[2]="yyyyyyyy"
    NB_OID=2
    VAR_STRING=""
    for I in $(seq 1 $NB_OID)
    do
            if [ -n $OID[$I] ]
            then
                    VAR_STRING="$VAR_STRING ${OID[$I]}"
            fi
    done
    echo $VAR_STRING
    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # ./test.sh 
    xxxx yyyyyyyy

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Heu... c'est pour faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {FS="="; ORS=" "} {print $2}' param.cfg

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Heu... c'est pour faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {FS="="; ORS=" "} {print $2}' param.cfg
    Dans param.cfg , y a pas mal des choses ( ya pas que les OIDs).

    au fait si j'ai un fichier param.cfg dont j'ai la declation suivant:
    IP=1.1.1.1
    PORT=162
    type["INTEGER"] = I
    type["STRING"] = S
    SENDER_OID["KST"] = "1.3.4.5.6"
    SENDER_OID["KNM"] = "1.3.4.5.7.8"

    et a part j'ai un script dont j'utilise awk, si dans mon script awk, je fais ce qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BEGIN {
     system("source ./param.cfg") // pour faire en sorte comme les declarations sont la et si je fais ca c'est parceque les parametres ds le fichier param change 
    }
    {
     
    ...
    }
    mais awk ne voit pas les declarations. Est ce que c'est possible de faire ca ?

  5. #5
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    D'abord, fais un effort pour t'exprimer clairement: Il faut vraiment déchiffrer tes messages. As-tu relu ton commentaire? Le voici: "pour faire en sorte comme les declarations sont la et si je fais ca c'est parceque les parametres ds le fichier param change".

    Pour une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {FS="="; ORS=" "} /^OID/ {print $2}' param.cfg
    Et puis il est normal que awk ne voit pas les variables d'environnement.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut
    Citation Envoyé par SYL666 Voir le message
    Salut,

    Tu peux utiliser les tableau en bash aussi :

    Une version identique de ton script, mais en utilisant une boucle for ainsi que les tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    OID[1]="xxxx"
    OID[2]="yyyyyyyy"
    NB_OID=2
    VAR_STRING=""
    for I in $(seq 1 $NB_OID)
    do
            if [ -n $OID[$I] ]
            then
                    VAR_STRING="$VAR_STRING ${OID[$I]}"
            fi
    done
    echo $VAR_STRING
    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # ./test.sh 
    xxxx yyyyyyyy
    Merci pour ta reponse.
    Mais si je declare un tableau comme vous dites. La declaration:
    OID[1]="xxxx"
    OID[2]="yyyyyyyy"
    NB_OID=2
    seront dans un fichier param.cfg.

    Et je source ce fichier dans mon script. Est ce que le fait de sourcer le fichier je peux acceder a mon tableau OID ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2006, 09h23
  2. [Configuration] php pour recuperer une variable dans l'url sans utiliser $_GET
    Par mikebranque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/06/2006, 20h22
  3. Réponses: 1
    Dernier message: 22/05/2006, 14h44
  4. Shell - Récupérer une variable dans un autre fichier
    Par claralavraie dans le forum Linux
    Réponses: 9
    Dernier message: 11/01/2006, 16h25
  5. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40

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