[sh] entier ou non?

milie -  
 milie -
Bonsoir à tous,

Je débute dans ce "langage" et j'ai encore beaucoup de chose à apprendre.
Aujourd'hui j'ai un petit probleme, je cherche à faire une fonction qui determine si un parametre est un entier ou non.

Donc je vous explique comment j'ai fais:
J'ai deja une fonction qui me permet de savoir si un nombre est un réel.

Pour ma fonction entier, je l'utilise:
Dans un premier temps je teste si mon argument est reel, si oui alors je modifie IFS = "."
et je test si mon nombre de parametre est plus grand que 1 ( si oui j'affiche erreur).

probleme! si je met entier 5 il me dit que c'est pas un entier... mais je ne comprends pas pourquoi :/

Merci d'avance à ceux qui prendront le temps pour m'aider

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    et je test si mon nombre de parametre est plus grand que 1 ( si oui j'affiche erreur).
    Tu peux afficher exactement quel code tu mets dans ton script ?
    0
    1. milie
       
      voici
      param_entier() {
      if(param_reel "$1")
      then
      IFS="."
      test $# -eq 2
      echo "parametre $1 n'est pas entier"
      fi
      return 0
      }

      j'ai egalement essaiyé avec
      test $# -gt 1

      Peut etre j'ai mal compris comment fonctionné IFS je ne sais pas :(
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      C'est clair que pour IFS tu t'es un peu emmêlé les pinceaux y compris au niveau du test ;-(


      Voir dans la faq pour tester un entier :
      Shell - Tester une variable numérique
      0
    3. milie
       
      beh j'ai fais vraiment une erreur bete ....

      param_entier() {
      if(param_reel "$1")
      then
      param="$1"
      sauvegarde_IFS="$IFS"
      IFS="."
      set -- $1
      FS="$savegarde_IFS"
      test $# -gt 1 && echo "parametre $param n'est pas entier"
      fi
      return 0
      }

      ça fonctionne bien mieux ainsi!
      0