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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
if [[ "$reco_result" == "MANAGED REAL TIME APPLY" ]]
> then
> echo "OK"
> fi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
if [[ $reco_result = "MANAGED REAL TIME APPLY" ]]
> then
> echo "OK"
> fi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
if [[ "$reco_result" = "$manag" ]]
> then
> echo "OK"
> fi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
if [[ $reco_result = $manag ]]
> then
> echo "OK"
> fi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.