Script shell - valider la nature d'un nombre

Résolu
charline159 Messages postés 216 Statut Membre -  
charline159 Messages postés 216 Statut Membre -
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!

1 réponse

  1. Exileur Messages postés 1621 Date d'inscription   Statut Membre Dernière intervention   150
     
    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
    1. charline159 Messages postés 216 Statut Membre 1
       
      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
    2. Exileur Messages postés 1621 Date d'inscription   Statut Membre Dernière intervention   150
       
      Hey, ça n'est pas ce que je t'ai envoyé !
      Essaies encore ;)

      :)
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > charline159 Messages postés 216 Statut Membre
       
      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
    4. Exileur Messages postés 1621 Date d'inscription   Statut Membre Dernière intervention   150
       
      aller, un indice :
      reg='^[0-9]+$'
      if ! [[ $yournumber =~ $reg ]] ; then
      echo "error: Not a number"
      fi
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Tiens, dans la FAQ de CCM, plusieurs façons de tester une variable numérique : Tester une variable numérique ;-)
      0