Controler un entier en shell unix (ksh)

Yann -  
 denis -
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

1 réponse

  1. francoispgp
     
    /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
    1. denis
       
      #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
    2. denis
       
      dans la premiere ligne j'ai utilisé une variable pour rien, ça se réduit par:
      toto=$(echo|awk '/[0-9]{'${#toto}'}/')
      0