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,


A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
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
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
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