Problème d'égalité entre deux chaines de caractères

Résolu/Fermé
Ouss91 - 16 janv. 2021 à 18:35
 Ouss91 - 17 janv. 2021 à 10:40
Bonjour,

Je débute en Bash et ca fait toute la journée que je travaille sur un bout de code que voici :

echo "Qui est le réalisateur de Gran Torino ?"
read reponse
reponseVrai=$(cat cinema_bdd.txt | grep "Gran Torino" | awk -F: '{print $5}')
if [[ "$reponse" == "$reponseVrai" ]]
then
echo "correspond"
else
echo "ne correspond pas"
fi


Le problème est que même quand je saisi la bonne réponse, ca affiche "ne correspond pas".
J'ai décomposé le code et tout marche. A la suite de plusieurs test que j'ai fait, j'en ai conclu que le problème vient de là if [[ "$reponse" == "$reponseVrai" ]]
Des idées ?
MERCI !
A voir également:

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
16 janv. 2021 à 19:32
Salut,

$(cat cinema_bdd.txt | grep "Gran Torino" | awk -F: '{print $5}')

peut se réduire à
$(awk -F: '/Gran Torino/ {print $5}' cinema_bdd.txt)


Ensuite enlève les quotes dans ton "if" :
if [[ $reponse == $reponseVrai ]] 


Et pour finir rajoute
set -xv
après ton shebang pour débuguer ton code.

Le fichier cinema_bdd.txt est bien au format UNIX ?

0
Bonsoir zipe31,

Merci pour ton aide.

Je viens de régler le problème : c'était dans le fichier texte :

Gran Torino:1h56:2008:Drame Thriller:Clint Eastwood

J'ai rajouté un ':' à la fin de la ligne et le code à marcher.
Le programme agissait sur le dernier champ, or il n'y avait pas de délimiteur, ce qui posait donc problème à mon humble avis
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié le 17 janv. 2021 à 10:39
Le programme agissait sur le dernier champ, or il n'y avait pas de délimiteur, ce qui posait donc problème à mon humble avis
Non, ça n'a aucune incidence.
Par contre, s'il y avait un caractère invisible, comme un espace par exemple, là ça changeait tout au niveau de la comparaison des chaînes -\
0
D'accord donc c'était sûrement un espace !
Je te remercie !
0