Décimal

Résolu
Bonjour je me permet de rouvrir un post car j'ai cliqué trop vite sur résoudre.
Je cherche toujours à tester une variable obtenu par un "read" pour vérifier qu'il s'agit bien d'un entier ou d'un décimal pour continuer (0 compris).

Actuellement j'ai ceci:

if [ ! -z $(echo "$interval" | grep -o "[0-9][0-9]*$") ]

Qui fonctionne presque parfaitement sauf si l'on rentre un caractère et un chiffre -> a1
Je cherche donc soit un complément qui assure qu'il n'y a que des chiffres en plus de potentiel . décimal soit une autre méthode.

Je vous remercie d'avance pour le sauvetage de vie :p

3 réponses

  1. salut,

    for i in 12 12.5 12,5 a12 12b
    do
    test "$i" = "$(bc -l <<<$i 2>/dev/null)" \
    && echo "$i est un nombre valide" \
    || echo "$i n'est pas un nombre valide"
    done
    12 est un nombre valide
    12.5 est un nombre valide
    12,5 n'est pas un nombre valide
    a12 n'est pas un nombre valide
    12b n'est pas un nombre valide
    1. Salut,

      Il suffit de rajouter "\b" ou "^" à la syntaxe de grep :
      grep -o "\b[0-9][0-9]*$"
      grep -o "^[0-9][0-9]*$"
      1. Merci de ta réponse,
        malheureusement avec le \b une lettre et un chiffre ne marche effectivement plus cependant sous la forme a2.4 cela fonctionne.
        La seconde méthode ne fonctionne plus avec les décimaux.
      2. @AlechEssaie comma ça :
         grep -x "[0-9][0-9.]*"
      3. ça fonctionne merci beaucoup