Décimal

Résolu/Fermé
Alech - 8 avril 2015 à 11:26
 Utilisateur anonyme - 8 avril 2015 à 16:27
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

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
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
8 avril 2015 à 13:31
Essaie comma ça :
 grep -x "[0-9][0-9.]*"
0
ça fonctionne merci beaucoup
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
8 avril 2015 à 13:24
0
Utilisateur anonyme
8 avril 2015 à 16:27
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