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 :

Mettre le résultat d'une boucle en variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Mettre le résultat d'une boucle en variable
    Bonjour,

    Pour le besoin d'un script, j'ai crée une petite boucle, bouclant sur une commande que j'appelle via des arguments.

    Cependant, j'aurais besoin de mettre le résultat de ma boucle dans un variable pour pouvoir travailler la sortie.

    Voici le script :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #!/bin/bash
     
    export BACNET_BBMD_ADDRESS=X.X.X.X
     
    #Arguments
    while getopts A:B:C:hV OPT
    do
       case $OPT in
            A)      AUTOMATE=$OPTARG ;;
            B)      OBJECT=$OPTARG ;;
            C)      IDENTIFIER=$OPTARG ;;
            h)
              print_help
              exit $STATE_UNKNOWN
              ;;
            V)
              print_version
              exit $STATE_UNKNOWN
              ;;
        esac
    done
     
    for i in 85
    do
            ./bacrp $AUTOMATE $OBJECT $IDENTIFIER $i
    done
    Voici la sortie de mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bash test.sh -A 2098179 -B 0 -C 2
    Registering with BBMD at X.X.X.X:47808 for 60000 seconds
    10.700000
    Et j'aimerai pouvoir mettre le nombre que j'obtiens dans une variable afin de la réutiliser.

    Merci par avance !

  2. #2
    Membre éprouvé Avatar de RaphaelG
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2016
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2016
    Messages : 94
    Par défaut
    J'ai peur de mal comprendre ton besoin.
    C'est quoi bacrp ?
    Si c'est un shell script, c'est lui qu'il faut que tu regardes pour l'intégrer dans ton script à toi.

    Sinon, en utilisant ton script test.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultat_bacrp=$(test.sh -A 2098179 -B 0 -C 2)

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    bacrp est une commande d'un paquet que j'ai installé.
    C'est via cette commande que je vais pouvoir interroger mes machines.

    Par contre, je ne peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat_bacrp=$(./test.sh -A 2098179 -B 0 -C 2)
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat_bacrp=$(./test.sh -A 2098179 -B 0 -C 2)
    c'est la commande de mon script

    En l'état actuel des choses mon script mon script me renvoie une valeur, valeur que j'obtiens avec ma boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in 85
    do
            ./bacrp $AUTOMATE $OBJECT $IDENTIFIER $i
    done
    C'est pour cela que j'aimerai pouvoir récupérer le résultat de ma boucle dans une variable et non pas à l’exécution de mon script


    Je sais pas si c'est plus lisible pour vous.

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Si j'ai bien compris la question, ce que tu souhaites est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    variable=$(for i in 85
    do
            ./bacrp $AUTOMATE $OBJECT $IDENTIFIER $i
    done)
    echo "variable=$variable"
    qui, la boucle ne servant à rien ici, peut être simplifié en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    variable=$( ./bacrp $AUTOMATE $OBJECT $IDENTIFIER 85)
    echo "variable=$variable"

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    C'est exactement ça jlliagre !
    Il est pas modérateur pour rien hein

    Par contre la boucle, pour des soucis de simplicité au début, prenait 1 valeur en compte.

    Si je veux boucler sur 2 valeurs comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in 85 117
    do
            ./bacrp $AUTOMATE $OBJECT $IDENTIFIER $i
    done
    Dois-je privilégier l'utilisation d'un tableau pour récupérer mes valeurs ?

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Tout dépend de ce que renvoie bacrp et de ce que tu en fais après, mais un tableau n'est probablement pas nécessaire.

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

Discussions similaires

  1. [MySQL] Mettre les résultats d'une boucle dans un tableau
    Par TuNi54 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 09/03/2011, 17h02
  2. Mettre résultat d'une boucle dans une variable
    Par zabyoo dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2009, 12h52
  3. [SQL] Mettre le résultat d'une requête dans une variable
    Par temperature dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/01/2008, 13h47
  4. Variable égal au résultat d'une boucle
    Par arnaudperfect dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2007, 17h23
  5. Réponses: 7
    Dernier message: 02/05/2006, 16h28

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