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 :

Test d'une valeur négative


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut Test d'une valeur négative
    Bonjour,

    je cherche à savoir si une valeur est négative, le problème c'est que j'ai trouvé une solution, mais elle ne fonctionne qu'avec des entiers.

    Je pourrai éventuellement comparer si le premier caractères est égal à un "-" mais celle solution me parait assez vilaine. Quelqu'un aurait une solution ?

    Merci beaucoup

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    quel langage utilises-tu?

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    mille excuses... je dois écrire un script bash, j'ai tenter de faire un compare avec un if

    if [ $var -lt 0 ]
    mais cela ne fonctionne qu'avec des entiers...

    p.s. j'ai contourné le problème mais si quelqu'un à une solution je la prend à titre d'information.

    Merci

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mormengil Voir le message
    mille excuses... je dois écrire un script bash, j'ai tenter de faire un compare avec un if

    mais cela ne fonctionne qu'avec des entiers...
    En fait, c'est encore pire que ça: en shell, il n'y a pas de typage de variable. Toute variable ne contient que du texte. Ainsi a=12 => a contient le caractère 1 suivi du caractère 2

    La commande "test" possède donc des options "eq, lt, gt, etc" qui lui permettent de prendre en compte le fait qu'il faut tester du numérique. Ainsi, la commande convertit le texte en nombre puis effectue la comparaison demandée. C'est pour ça que
    test 5 = 000005 ne fonctionne pas
    test 5 -eq 000005 fonctionne

    Ta première solution de vérifier le premier caractère est la plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test "`echo $var |cut -c1`" = "-"
    J'ai utilisé d'ailleurs un truc similaire pour vérifier si une variable était numérique ou pas => je convertissais tout chiffre en "rien" et je regardais à la fin s'il restait qqchose. Avec une gestion particulière pour le "." décimal et le "-" éventuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
    # Programme qui vérifie si son argument est ou n'est pas numérique réel
    # Usage: prog chaîne
     
    # Suppression de chaque chiffre, du premier point et du signe "moins" s'il est en début de nombre
    verif=`echo $1 |sed –e "s/[0-9]//g" –e "s/\.//" –e "s/^-//"`
     
    # Si le résultat est vide, c'est que c'était un nombre correct
    test –z "$verif" && echo "L'argument $1 est un nombre" || echo "L'argument $1 n'est pas un nombre"
    Pour moi, ta solution du caractère "-" est la plus simple à mettre en place.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    ok merci de l'explication je trouvais ma solution moche est pas très pro, je suis soulagé

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

Discussions similaires

  1. test:comparer une valeur avec plusieurs valeurs
    Par kkkkkk dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2007, 21h25
  2. [MySQL] test si une valeur est déjà présente dans la table ou non
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 14/06/2007, 13h42
  3. [DEBUTANT] test sur une valeur
    Par eclipse012 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/02/2007, 09h52
  4. requête access (test d'une valeur entrée par l'utilisateur)
    Par ben5985 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 30/11/2006, 08h39
  5. test d'une valeur stocké dans une table
    Par EssaiEncore dans le forum ASP
    Réponses: 3
    Dernier message: 18/02/2005, 11h39

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