Difference d'interpretation dans un "if"

Résolu/Fermé
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 18 mars 2015 à 11:48
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 18 mars 2015 à 13:31
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.

2 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
18 mars 2015 à 12:17
hello
utiliser bash toto.sh, sh ne connait pas la syntaxe math. ((expr))
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
18 mars 2015 à 12:23
Oui, c'est bien ça. le ';' manquant était juste une erreur de frappe.
Merci du renseignement.
A tout hasard, une alternative à (( )) en sh ?
0
manuel > Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023
18 mars 2015 à 12:59
A tout hasard, une alternative à (( )) en sh ?
if [ "${RATE}" -gt 96 ]; then...
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
18 mars 2015 à 12:37
la commande expr
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
18 mars 2015 à 13:31
tout simplement utiliser test...
Merci.
0
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