[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

zipe31 Messages postés 38797 Date d'inscription   Statut Contributeur Dernière intervention   6 435
 
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
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
zipe31 Messages postés 38797 Date d'inscription   Statut Contributeur Dernière intervention   6 435
 
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
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