Bash et comparaison de chaines de caractères

Fermé
barjoray - 7 févr. 2011 à 11:59
 Utilisateur anonyme - 6 nov. 2016 à 21:28
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

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
7 févr. 2011 à 12:08
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
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 dimanche 6 novembre 2016 Statut Membre Dernière intervention 6 novembre 2016
6 nov. 2016 à 18:36
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
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