Bash et comparaison de chaines de caractères

Bonjour,

Je lutte depuis un moment pour faire un truc simple : comparer deux chaines de caractères, j'ai essayé bon nombre de trucs mais sans résultats

#!/bin/bash

points="point"
if ["$points" == 'point']; then
echo "ok"
else
echo "pas ok"
fi

Ce code me renvoie une erreur et passe ensuite par le "pas ok".
+ [point == point]
import.sh: 1: [points: not found
+ echo pas ok
pas ok

Avez-vous idée du pourquoi?
Merci beaucoup,

3 réponses

  1. Contributeur
    Salut,

    La syntaxe est très stricte en bash.

    Il faut des espaces avant et après chaque crochet (ouvrant et fermant).
    Le comparateur est un signe "égal" simple (=) :

    #!/bin/bash
    
    points="point"
    if [ "$points" = 'point' ]; then
    echo "ok"
    else
    echo "pas ok"
    fi 
    1
    1. Yahoo! Ca marche merci, je pensais pourtant avoir déjà essayé en rajoutant les espaces, en enlevant le deuxième "=" et encore tout plein d'autre chose,

      Merci encore!
      0
      1. bonjour
        j'essaié de modifier ton code et ça marche
        éssaie avec ce code

        #!/bin/bash
        points=point
        if test $points == "point"
        then
        echo "ok"
        else
        echo "pas ok"
        fi
        bon courage
        0
        1. le mec t'a-t-il attendu pendant 5 ans ?

          en plus, ton code comporte une erreur :
          il faut mettre les variables entre guillemets, surtout pour des tests.
          essaie avec
          points="bla bla"
          , dans un test, sans et avec guilllemets.

          et le double égal est plutôt à réserver aux crochets doubles.
          0