Controler un entier en shell unix (ksh)

Fermé
Yann - 19 sept. 2003 à 11:23
 denis - 10 nov. 2011 à 17:20
Bonjour,

g un shell toto.ksh argument

je veux controler que argument est un entier...

comment dois je faire...

g essayé :

if [ $argument == [0-9]* ]
then
blabla
fi

mais ca ne marche pas

merci pour votre aide
A voir également:

1 réponse

/tmp>cat > test
#!/bin/ksh
x=$1
if [ `expr $x \* -1` -lt 0 ]; then
echo "entier"
fi
/tmp>chmod 540 test
/tmp>./test 4
entier
/tmp>./test 44
entier
/tmp>./test 456
entier
/tmp>./test R 2> /dev/null
/tmp>./test 0.2 2> /dev/null
/tmp>./test 15633654545 2> /dev/null
entier
/tmp>

voilà une piste....
tu peux metre
`expr $x \* -1 2>/dev/null` comme coondition de IF
0
#vide la variable toto si pas numerique
toto=$(echo "${toto}"|awk '/[0-9]{'${#toto}'}/')
#teste si toto est vide ou pas et affiche le resultat en fonction du test
[[ -z "$toto" ]] && echo "non numerique" || echo "numerique"
0
dans la premiere ligne j'ai utilisé une variable pour rien, ça se réduit par:
toto=$(echo|awk '/[0-9]{'${#toto}'}/')
0