Test égalité bash

Résolu
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. Modérateur
    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
    1. Modérateur
      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
      1. Merci à vous :)
        C'était effectivement aussi bête que ça...
        J'y penserai à l'avenir !
        0