Problème d'égalité entre deux chaines de caractères
Résolu
Ouss91
-
Ouss91 -
Ouss91 -
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 !
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 !
3 réponses
-
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 rajouteset -xv
après ton shebang pour débuguer ton code.
Le fichier cinema_bdd.txt est bien au format UNIX ?
-
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 -