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 :

Test de comparaison "-0.45 > 0"


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
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut Test de comparaison "-0.45 > 0"
    Bonjour,
    Voici mon script de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    if bc <<< "-0.45 > 0"
    then
            echo "négatif"
    else
            echo "positif"
    fi
    Si je mets >, le résultat est :
    0
    négatif

    Si je mets <, le résultat est :
    1
    négatif

    Comment se fait-il qu'il ne rentre jamais dans la boucle else pour afficher "positif"
    C'est une dinguerie à s'en arracher les cheveux !!!
    Pouvez-vous m'aider svp ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 143
    Par défaut
    Bonjour,

    Ce que teste if ce n'est pas la valeur numérique qui est affichée mais le code retour de la commande qui est exécutée.
    Ici, la commande bc s'exécute sans erreur quel que soit le sens du comparateur. il est donc normal que seule la première branche du test soit conservée.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    Désolé mais je ne comprends pas ....
    Car en fonction du sens du comparateur j'ai un 0 ou un 1 qui s'affiche. Donc le if devrait évaluer ce 0 ou ce 1 et changer de branche en fonction, non ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    pour la démonstration, je supprime tous les retours de la commande bc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ &>/dev/null bc <<<'-0.45<0'; echo $?
    0
    $ &>/dev/null bc <<<'-0.45>0'; echo $?
    0
    on voit que la commande n'échoue pas. sa syntaxe est correcte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (( $(bc <<<'-0.45>0') )); then echo "positif"; else echo "négatif"; fi

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    N_baH....tu me sauves encore... je l'ai retourné dans tous les sens avec des () des [] etc etc mais honnêtement j'ai encore du mal à comprendre quand il faut utiliser des (, des [ parfois des doubles, des " ou encore des ' et avec ça parfois un $.
    Ca me donne mal au cheveux..... j'ai l'impression qu'il y a toujours un cas de figure particulier !!!

    Sinon, y a-t-il moyen de remplacer bc <<< par | bc ??? Initialement, j'avais commencé avec ça.

  6. #6
    Invité
    Invité(e)
    Par défaut
    y a-t-il moyen de remplacer bc <<< par | bc ?
    oui, c'est possible.

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

Discussions similaires

  1. Test de comparaison de moyennes sur séries appariées
    Par mathis86 dans le forum SAS STAT
    Réponses: 9
    Dernier message: 14/03/2012, 17h08
  2. Test de comparaison
    Par NemoParis dans le forum SAS STAT
    Réponses: 6
    Dernier message: 20/08/2010, 14h56
  3. [Trucs&astuces] Tests et Comparaison de chaînes
    Par I'm_HERE dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 29/07/2009, 18h55
  4. Test de comparaison
    Par CélineM dans le forum SAS STAT
    Réponses: 7
    Dernier message: 15/04/2008, 11h59
  5. Test de comparaison
    Par Crazy_Gun dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/12/2005, 19h06

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