Curiosité du bash? Comparaison de chaînes
spom
-
spom -
spom -
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!
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:
- Spom comparaison
- Comparaison million milliard - Accueil - Technologies
- Logiciel comparaison photo gratuit - Télécharger - Photo & Graphisme
- Comparaison samsung a15 et a16 - Accueil - Téléphones
- Comparaison prix amazon - Accueil - Commerce
- Prix Amazon : comment suivre les évolutions de tarifs - Guide
2 réponses
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
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