[bash] Compararaison de chaines
Bonjour,
Je sais que vu le titre, on se dit que le problème a déjà été abordé 1000 fois, et ce n'est pas complètement faux, seulement j'ai beau avoir, je pense, tout essayé de ce qui est proposé un peu partout, et mon problème est toujours d'actualité et je ne comprends vraiment pas pourquoi.
Voilà mon problème, j'ai une variable contenant une chaine de caractère qui est retournée par un petit script SQL, je la nommerai $reco_result
JE SAIS quelle est sa valeur à l'heure actuelle, en l'occurrence "MANAGED REAL TIME APPLY" (sans les double quote).
J'ai écrit une petite condition pour vérifier cette valeur comme suivant :
Code:
1 2 3 4
| if [[ $reco_result == "MANAGED REAL TIME APPLY" ]]
then
echo "OK"
fi |
Et je n'ai jamais le résultat OK que j'attends...
J'ai essayé cette condition dans tous les sens comme suivant :
Code:
1 2 3 4
| if [[ "$reco_result" == "MANAGED REAL TIME APPLY" ]]
> then
> echo "OK"
> fi |
Code:
1 2 3 4
| if [[ $reco_result = "MANAGED REAL TIME APPLY" ]]
> then
> echo "OK"
> fi |
Code:
1 2 3 4 5
| if [[ "$reco_result" != 'MANAGED REAL TIME APPLY' ]]
> then
> echo "KO"
> fi
KO |
J'ai ensuite stocké la string MANAGED REAL TIME APPLY dans une variable $manag pour tester, mais pas mieux :
Code:
1 2 3 4
| if [[ "$reco_result" = "$manag" ]]
> then
> echo "OK"
> fi |
Code:
1 2 3 4
| if [[ $reco_result = $manag ]]
> then
> echo "OK"
> fi |
Code:
1 2 3 4
| if [ "$reco_result" = "$manag" ]
> then
> echo "OK"
> fi |
En résumé quand je teste l'égalité, le echo ne s'exécute pas, quand je teste l'inégalité, le echo s'exécute bien, donc pour le système les deux strings sont vraiment différentes alors que pour moi elles sont identiques, j'ai revérifiée en faisant :
Code:
1 2 3
| echo $reco_result ; echo $manag
MANAGED REAL TIME APPLY
MANAGED REAL TIME APPLY |
Enfin j'ai même été jusqu'à envoyer les résultats de mes variables dans des fichiers textes que j'ai édités avec Vi, puis en faisant un :set list pour voir dans chaque fichier s'il n'y avait pas un espace ou un caractère de fin de ligne, mais non rien. Même un diff de ces deux fichiers textes ne me remonte aucune différence donc je ne comprends vraiment pas pourquoi ma condition ne renvoie pas l'égalité...
Help ?
Merci d'avance.
Bonne journée.