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 :

Les chiffres significatifs


Sujet :

Shell et commandes GNU

  1. #21
    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
    Tu veux probablement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo " \"$unity\" = \"$valeur\" | $unity=$valeur;$WARN;$CRIT;0;$MAX "

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Non la commande me renvoie plus ou moins la même chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    + printf -vvar1 %.2f 10,219999
    ++ echo 10,22
    ++ sed 's/\,/./g'
    + valeur=10.22
    ++ echo '10.22 > 10'
    ++ bc -l
    + ((  1  ))
    =10.22;5;10;0;25 'ees-celsius
    =10.22;5;10;0;25 rees-celsius
    Je suppose que le problème provient avant le pipe mais même en isolent les variables cela ne change rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \"$unity\" = \"$valeur\" |

  3. #23
    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
    Citation Envoyé par musha76 Voir le message
    Non la commande me renvoie plus ou moins la même chose
    Plus ou moins ??

    Que renvoie cette commande ? Es-tu sûr de bien retranscrire exactement la ligne de commande qui est effectivement dans ton script ? Un "|" n'est pas interprété par le shell s'il est entre double-quotes, ce qui est le cas dans ce que tu as posté.

    Peux-tu mettre le résultat du set -x avec cette commande (echo ...) ?

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    J'ai fais un c/c de ta commande.

    Pour y voir plus clair, 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #!/bin/bash
     
    #Connexion à la à l'automate
    export BACNET_BBMD_ADDRESS=X.X.X.X
     
    #Arguments
    while getopts A:B:C:D:E:F:hV OPT
    do
       case $OPT in
            A)      AUTOMATE=$OPTARG ;;
            B)      OBJECT=$OPTARG ;;
            C)      IDENTIFIER=$OPTARG ;;
            D)      WARN=$OPTARG ;;
            E)      CRIT=$OPTARG ;;
            F)      MAX=$OPTARG ;;
            h)
              print_help
              exit $STATE_UNKNOWN
              ;;
            V)
              print_version
              exit $STATE_UNKNOWN
              ;;
        esac
    done
     
    #On va chercher la valeur
    val=$(/tmp/bacnet-stack-0.8.3/bin/bacrp $AUTOMATE $OBJECT $IDENTIFIER 85 | sed 's/\r//; s/\./,/')
    unity=$( ./bacrp $AUTOMATE $OBJECT $IDENTIFIER 117)
     
    #Traitement de la valeur
    printf -vvar1 "%.2f" $val
    valeur=$(echo $var1 | sed "s/\,/./g")
     
     
    #Condition
    if (( $(echo "$valeur > $CRIT" | bc -l) ));then
            echo " \"$unity\" = \"$valeur\" | $unity=$valeur;$WARN;$CRIT;0;$MAX "
    elif (( $(echo "$valeur >= $WARN" | bc -l) ));then
            echo "Warning - valeur=$valeur - warning=$WARN - critical=$CRIT"
    else
            echo "OK - valeur=$valeur - warning=$WARN"
    fi
    Et voici le résultat du 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    bash -x check_siemens.sh -A 2098179 -B 0 -C 2 -D 5 -E 10 -F 25
    + export BACNET_BBMD_ADDRESS=X.X.X.X
    + BACNET_BBMD_ADDRESS=X.X.X.X
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + AUTOMATE=2098179
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + OBJECT=0
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + IDENTIFIER=2
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + WARN=5
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + CRIT=10
    + getopts A:B:C:D:E:F:hV OPT
    + case $OPT in
    + MAX=25
    + getopts A:B:C:D:E:F:hV OPT
    ++ /tmp/bacnet-stack-0.8.3/bin/bacrp 2098179 0 2 85
    Registering with BBMD at X.X.X.X:47808 for 60000 seconds
    ++ sed 's/\r//; s/\./,/'
    + val=10,450000
    ++ ./bacrp 2098179 0 2 117
    Registering with BBMD at X.X.X.X:47808 for 60000 seconds
    + unity=$'degrees-celsius\r'
    + printf -vvar1 %.2f 10,450000
    ++ sed 's/\,/./g'
    ++ echo 10,45
    + valeur=10.45
    ++ echo '10.45 > 10'
    ++ bc -l
    + ((  1  ))
    =10.45;5;10;0;25 'ees-celsius
    =10.45;5;10;0;25 rees-celsius


    EDIT : Et ce qui est le plus bizarre c'est quand je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (( $(echo "$valeur > $CRIT" | bc -l) ));then
            echo " Unité = $unity "
            echo " Valeur = $valeur "
            echo " "$unity" = "$valeur" "
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ++ echo '9.90 > 7'
    ++ bc -l
    + ((  1  ))
     'echo ' Unité = degrees-celsius
     Unité = degrees-celsius
    + echo ' Valeur = 9.90 '
     Valeur = 9.90
     = 9.90 'degrees-celsius
     = 9.90 -celsius

  5. #25
    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
    Il y a un retour-chariot (\n) à la fin de la valeur de la variable unity.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Effectivement...

    Depuis le début c'est ce retour chariot qui me gène

    En tout cas un grand merci à vous pour votre aide !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. extraire uniquement les chiffres d'une cellule
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2017, 18h25
  2. un champ n'accepte que les chiffres....
    Par fadex dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/10/2005, 14h18
  3. xslt --> test sur les chiffres
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/09/2005, 13h17
  4. Algorithme pour chiffres significatifs en Assembleur
    Par lutin2003 dans le forum Assembleur
    Réponses: 5
    Dernier message: 09/09/2004, 10h47
  5. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11

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