Script shell - valider la nature d'un nombre

Résolu/Fermé
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 17 août 2017 à 10:58
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 - 17 août 2017 à 18:11
Bonjour! J'ai un petit soucis sur un script shell:

#!/bin/bash

if [ $# -ne 1 ]
then
echo "Veuillez rentrer un chiffre ou nombre en paramètre!"
elif [ $1 -eq 10 ]
then
echo "parfait!"
elif [ $1 -gt 10 ]
then
echo "c'est trop!"
else
echo "ce n'est pas assez!"
fi


Si je tape mon script avec une lettre en paramètre, ça plante.
Comment faire pour que la condition admette qu'il faut nécessairement un chiffre/un nombre en paramètre, et non des lettres?

Merci pour votre aide!

A voir également:

1 réponse

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
17 août 2017 à 11:30
Salut,

Il faut que tu utilises les expressions régulière (regex).

reg='^[0-9]+$'
if ! [[ $yournumber =~ $reg ]] ; then
echo "error: Not a number"
fi

A plus dans l'bus
0
charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022 1
17 août 2017 à 12:07
Salut,
merci pour ton aide!
J'ai rajouté la ligne au début, à la première condition:

#!/bin/bash

if [ $# -ne 1 ] || [ $1 = $reg ]
then
echo "Veuillez rentrer un chiffre ou nombre en paramètre!"
elif [ $1 -eq 10 ]
then
echo "parfait!"
elif [ $1 -gt 10 ]
then
echo "c'est trop!"
else
echo "ce n'est pas assez!"
fi


Mais quand je lance le script, il indique soit "opérateur unaire attendu" soit "nombre entier attendu comme expression"!
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
17 août 2017 à 12:12
Hey, ça n'est pas ce que je t'ai envoyé !
Essaies encore ;)

:)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > charline159 Messages postés 208 Date d'inscription lundi 14 août 2017 Statut Membre Dernière intervention 22 juin 2022
17 août 2017 à 12:12
Salut,

Il faut déclarer la variable "$reg" au préalable et cette forme de comparaison n'est valable qu'avec l'utilisation des doubles crochets ;-\
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié le 17 août 2017 à 12:14
aller, un indice :
reg='^[0-9]+$'
if ! [[ $yournumber =~ $reg ]] ; then
echo "error: Not a number"
fi
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
17 août 2017 à 12:15
Tiens, dans la FAQ de CCM, plusieurs façons de tester une variable numérique : Tester une variable numérique ;-)
0