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 :

Comparer 2 entiers en bash


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
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Par défaut Comparer 2 entiers en bash
    Salut à tous,

    je cherche à comparer une valeur que je récupère d'un site à une valeur donnée par l'utilisateur. Je bloque sur
    comment convertir la valeur donnée par l'utilisateur ex : 4,765 en entier avec bc et ensuite faire la comparaison entre $1 et *seuil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #! /usr/bin/env bash
     
    curl -o test.txt url du site
     
    seuil=$(cat valeur.txt | head -n 79 | tail -n 1 | cut -d ">" -f3 | cut -c1-5 )
     
    if [ $(echo "$1 > $seuil" | bc) ] 
    then 
      echo "valeur en hausse"
    else
      echo "valeur en baisse"
    fi

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    Bonjour,

    comment convertir la valeur donnée par l'utilisateur [...] en entier avec bc et ensuite faire la comparaison entre $1 et *seuil
    quel intérêt ?
    bc comprend très bien les décimaux.
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set -- 2.5
    seuil=3.5
    if (( $(bc <<< "$1 > $seuil") )); then echo ok; else echo ko; fi
    ko
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Par défaut
    Merci de ta réponse peux tu juste me dire à quoi correspond la syntaxe suivante
    Sinon en testant le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (( $(bc <<< "$1 > $seuil") ))  
    then 
      echo $1
    else
      echo $seuil
    fi
    je rencontre l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (standard_in) 1: syntax error
    (standard_in) 1: syntax error
    4,340
    (standard_in) 1: syntax error
    (standard_in) 1: syntax error
    pourtant l'espace les ponctuations ont l'air ok

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    Citation Envoyé par man bash
    Chaînes en ligne
    Une variante aux documents en ligne, le format est :

    <<<mot

    Le mot est développé et fourni à la commande sur son entrée standard.
    la ponctuation n'est pas OK : bc ne parle qu'anglais, il veut des décimales comportant un point
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    if (( $(bc <<< "${1/,/.} > ${seuil/,/.}") ))
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 137
    Par défaut
    Je te remercie de tes explications !

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour,

    Mais...euh... Pourquoi personne ne dit qu'on n'est pas obligé d'utiliser bc?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $
    $ [[ 3.2 > 4.5 ]] && echo ok || echo ko
    ko
    $ [[ 3.2 < 4.5 ]] && echo ok || echo ko
    ok
    $

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 06/11/2014, 09h28
  2. Comparer des entiers en tant que string
    Par power of mind dans le forum Langage
    Réponses: 12
    Dernier message: 19/06/2009, 11h54
  3. [MySQL] comparer des entiers
    Par angeleweb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/12/2007, 18h21
  4. comparer trois entiers avec if
    Par bandit_debutant dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2006, 20h26
  5. comparer la différence de deux dates à un entier
    Par abennani dans le forum Access
    Réponses: 3
    Dernier message: 31/07/2006, 10h34

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