La réponse de @Cyrus est exactement sur le point de savoir comment résoudre ce problème - pour expliquer, lors de l'utilisation de echo
il affichera une nouvelle ligne à la fin de la chaîne. Comme vous pouvez le voir sur cette sortie en ligne, hello
avec une nouvelle ligne produit exactement le MD5 que vous obteniez précédemment. Utilisation de -n
supprime la nouvelle ligne, et vous donnera alors le résultat que vous attendiez.
Modifier :
Vous pouvez le voir clairement si vous le sortez en hexdump
, qui affiche l'hexadécimal des octets ici.
$ echo "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 0a |str_example.|
Voir le 0a
(\n
) à la fin de la chaîne
$ echo -n "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 |str_example|
Avec -n
echo ne met pas de nouvelle ligne (\n
) à la fin
Maintenant avec une chaîne vide
$ echo "" | hd
00000000 0a |.|
Juste le caractère de nouvelle ligne
$ echo -n "" | hd
Chaîne vide, donc hexdump
n'affiche aucune sortie
Par défaut, echo
inclut un caractère de saut de ligne à la fin de la sortie. Cependant, PHP et les sites en ligne que vous avez utilisés n'incluent pas la nouvelle ligne. Pour supprimer le caractère de nouvelle ligne, utilisez le -n
drapeau :
echo -n "hello" | md5sum
Sortie :
5d41402abc4b2a76b9719d911017c592 -
Voir :help echo
ou avec printf :
printf "%s" "hello" | md5sum