Curiosité du bash? Comparaison de chaînes

Fermé
spom - 23 sept. 2009 à 17:52
 spom - 24 sept. 2009 à 19:06
Bonjour à tous,

Je suis actuellement en train d'écrire un script bash qui travaille sur les hash codes de chaines de caractères.
Je suis amené à effectuer une comparaison entre un hash code recherché et un hash code produit par une commande.

Or, bizarrement, la comparaison ne fonctionne jamais, même lorsqu'elle serait censée fonctionner...et que l'affichage donne deux chaines bien identiques!
Par exemple, le code suivant me donne la sortie "pas ok", alors que le hash code calculé (hashComputed) est égal au hashcode recherché (hashMatching). Erreur dans la comparaison ?

#!/bin/sh

echo "X83424S-aac" | openssl md5 | tr -d '\n' > $hashComputed
#Je supprime le caractère de saut de ligne renvoyé par la commande

echo "$hashComputed---"

hashMatching='03eae433de5ae5b4b48d751d8e1739e3'
echo "$hashMatching---"

#Les affichages sont identiques!

if "$hashComputed" == "$hashMatching"; then
echo "ok"
else
echo "pas ok"
fi

Merci à tous ceux qui auraient des idées!
A voir également:

2 réponses

dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
24 sept. 2009 à 09:26
hello

#!/bin/sh
c'est le Bourne shell, pas bash, utiliser #!/bin/bash

echo "X83424S-aac" | openssl md5 | tr -d '\n' > $hashComputed
redirige dans un fichier, mais pas dans une variable, utiliser
en sh ou bash: hashComputed=`echo "X83424S-aac" | openssl md5 | tr -d '\n'`
en bash: hashComputed=$(echo "X83424S-aac" | openssl md5 | tr -d '\n')

pour le test, un seul =
if ["$hashComputed" = "$hashMatching" ]; then

essaye en sh
#!/bin/sh

hashComputed=`echo "X83424S-aac" | openssl md5 | tr -d '\n'`
#Je supprime le caractère de saut de ligne renvoyé par la commande

echo "$hashComputed---"

hashMatching='03eae433de5ae5b4b48d751d8e1739e3'
echo "$hashMatching---"

#Les affichages sont identiques!

if [ "$hashComputed" = "$hashMatching" ]; then
echo "ok"
else
echo "pas ok"
fi
0
Hello dubcek!
Merci pour ta réponse, petite subtilité, c'était bien vu!

Plus de problème donc, encore merci:)

@+
0