Difference d'interpretation dans un "if"

Résolu
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Voilà, j'ai un code tout simple :
RATE=128
if (( RATE  >96 )) then echo OK;else echo NOK;fi

si je l'exécute directement dans une console, il fonctionne, mais si je le met dans un fichier "toto.sh" et que je le lance j'ai une erreur :
$ sh toto.sh
toto.sh: 21: toto.sh: 128: not found

J'en reste pentoi.
--
Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux.
Char Snipeur

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    utiliser bash toto.sh, sh ne connait pas la syntaxe math. ((expr))
    1
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      Oui, c'est bien ça. le ';' manquant était juste une erreur de frappe.
      Merci du renseignement.
      A tout hasard, une alternative à (( )) en sh ?
      0
      1. manuel > Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention  
         
        A tout hasard, une alternative à (( )) en sh ?
        if [ "${RATE}" -gt 96 ]; then...
        0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      la commande expr
      0
    3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      tout simplement utiliser test...
      Merci.
      0
  2. manuel
     
    Salut,

    A tout hasard, il manque un ";" avant le
    then
    ;-\

    Chez moi ça marche :

    $ RATE=128; if (( RATE > 96 ));then echo OK; else echo NOK;fi
    OK

    $ cat foo.sh
    #! /bin/bash

    RATE=128
    if (( RATE > 96 ));then
    echo OK
    else echo NOK
    fi

    $ ./foo.sh
    OK
    0