Test égalité bash

Résolu/Fermé
Dabou - 29 juil. 2010 à 11:58
 Dabou - 29 juil. 2010 à 14:55
Bonjour,

Je bosse actuellement sur un petit script, mais je rencontre un souci de test d'égalité... c'est bête, mais je ne trouve pas où je me trompe.

RESULT=$((NB%2))
echo $RESULT
if ["$RESULT" = "0"]
        then
                echo "ici"
fi


L'idée, c'est que quand je récupère un nombre paire, je le détecte, tout simplement.
Le résultat est le suivant :

0
test.sh: 17: [0: not found


Le RESULT est donc bien à 0 (de temps en temps il passe à 1, selon les paramètres en entrée), mais pourtant, il n'arrive pas à faire le test.
J'ai aussi essayé
if [$RESULT -eq 0]

mais ça me donne le même résultat...

Bref, si quelqu'un a une idée :)

Merci !
A voir également:

3 réponses

mamiemando Messages postés 33488 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 janvier 2025 7 817
Modifié par mamiemando le 30/07/2010 à 10:58
L'opérateur = en bash teste une égalité sur les chaînes de caractères.
Pour des valeurs numériques il faut utiliser -eq.
La syntaxe bash étant particulièrement pointilleuse, il faut mettre un espace autour des caractères [ et ] sinon ça ne marchera pas.

# chaîne de caractères
if [ $RESULT = 0 ] 
then 
   #.... 
fi


ou

# valeur numérique
if [ $RESULT -eq 0 ] 
then 
   #.... 
fi


Bonne chance
5
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
Modifié par jipicy le 29/07/2010 à 16:09
Salut,

Il faut un espace après le crochet ouvrant (et avant le fermant aussi) :

if [ "$RESULT" = "0" ]


$ man woman
Il n'y a pas de page de manuel pour woman.

GNU/Linux : Gnu/Linux is Not Ubuntu !
1
Merci à vous :)
C'était effectivement aussi bête que ça...
J'y penserai à l'avenir !
0