Test égalité bash

Résolu
Dabou -  
 Dabou -
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 !

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  3. Dabou
     
    Merci à vous :)
    C'était effectivement aussi bête que ça...
    J'y penserai à l'avenir !
    0