Décimal

Résolu
Alech -  
 Utilisateur anonyme -
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

manuel
 
Salut,

Il suffit de rajouter "\b" ou "^" à la syntaxe de grep :
grep -o "\b[0-9][0-9]*$"
grep -o "^[0-9][0-9]*$"
0
Alech
 
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.
0
manuel > Alech
 
Essaie comma ça :
 grep -x "[0-9][0-9.]*"
0
Alech
 
ça fonctionne merci beaucoup
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
0
Utilisateur anonyme
 
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
0