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 :

Comment mettre un résultat en sortie de pipe dans 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 Comment mettre un résultat en sortie de pipe dans une variable ?
    Bonjour,

    Mon problème est que je cherche à récupérer des informations en sortie d'un programme.

    lorsque je lance blabla via un autre programme toto,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto -option1 xxx -option2 xxx "blabla fich.xx"
    Celui-ci me renvoie une info du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDENTIFICATION NUMBER: JOB_ID=12345678
    Je ne peut pas accéder à la variable environnement $JOB_ID qui n'est définie qu'à l'intérieur de l’exécution de blabla. J'ai donc essayé de ruser pour récupérer cet ID:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto -option1=x,option2=y "blabla fich.xx" | grep -n "JOB_ID" | cut -d= -f 2
    je récupère bien le bon numéro mais je ne sais comment le mettre dans une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    idjob=$(toto -option1=x,option2=y "blabla fich.xx" | grep -n "JOB_ID" | cut -d= -f 2)
    de même que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto -option1 xxx -option2 xxx "blabla -optionA -optionB xxx" | grep -n "JOB_ID" | idjob=$(cut -d= -f 2)
    Ne fonctionnent pas... j'ai essayer aussi de stocker temporairement dans un fichier comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    toto -option1=x,option2=y "blabla fich.xx" | grep -n "JOB_ID" | cut -d= -f 2 >> idjob.txt idjob=$(cat idjob)
    semble fonctionner mais bon, ça a l'air peu efficace.

    Auriez-vous une manière plus simple et rapide de faire ?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    En utilisant '=' comme séparateur entre libellé et valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idjob=$(toto -option1 xxx -option2 xxx "blabla -optionA -optionB xxx"   | grep -n "JOB_ID" | awk -F= '{print $2}')

  3. #3
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idjob=$(toto -option1=x,option2=y "blabla fich.xx" | grep -n "JOB_ID" | cut -d= -f 2)
    ça devrait fonctionner (l'option -n ne paraît pas utile).
    que te donnes un echo "$idjob" ?
    peux-tu donner un échantillon plus large de la sortie de la commande toto ?

    mvvvv, on n'utilise pas grep avec awk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto [...] | awk -F'=' '/JOB_ID/{print $2}'

  4. #4
    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
    Ah merci !

    oui j'ai un peu de mal avec awk... déjà le pipe c'est encore un peu limite... ça fonctionne un peu de manière aléatoire après beaucoup d'essais donc bon...

    Oui la ligne avec grep fonctionne... puisque echo $idjob me renvoie bien 12345678

    je vais essayer avec awk demain Mais en tout cas ça marche c'est déjà ça !

    Merci !

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

Discussions similaires

  1. [Think Pascal] Mettre la lecture de la touche ENTRER dans une variable de type char
    Par inidark dans le forum Autres IDE
    Réponses: 1
    Dernier message: 21/05/2009, 23h21
  2. Réponses: 1
    Dernier message: 08/02/2009, 08h19
  3. Comment lire un fichier XML et l'écrire dans une variable XML en C#
    Par Bonne Année dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/01/2009, 13h34
  4. Réponses: 0
    Dernier message: 16/01/2009, 15h15
  5. Comment sauvegarder un objet shape de type msopicture dans une variable
    Par PascalCos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/07/2007, 18h35

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