Bash et comparaison de chaines de caractères

barjoray -  
 Utilisateur anonyme -
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. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. barjoray
     
    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
  3. azedine10 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
     
    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. Utilisateur anonyme
       
      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