La risposta di @Cyrus è esattamente in linea con come risolvere questo problema - per spiegare, quando si utilizza echo
produrrà una nuova riga alla fine della stringa. Come puoi vedere in questo output online, hello
con una nuova riga emette esattamente l'MD5 che stavi ottenendo in precedenza. Usando -n
sopprime la nuova riga e ti darà il risultato che ti aspettavi.
Modifica :
Puoi vederlo chiaramente se lo emetti in hexdump
, che mostra l'esadecimale dei byte presenti.
$ echo "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 0a |str_example.|
Vedi il 0a
(\n
) alla fine della stringa
$ echo -n "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 |str_example|
Con -n
echo non inserisce una nuova riga (\n
) alla fine
Ora con una stringa vuota
$ echo "" | hd
00000000 0a |.|
Solo il carattere Nuova riga
$ echo -n "" | hd
Stringa vuota, quindi hexdump
non mostra alcun output
Per impostazione predefinita, echo
include un carattere di nuova riga alla fine dell'output. Tuttavia, PHP e i siti online che hai utilizzato non includono la nuova riga. Per sopprimere il carattere di nuova riga, usa il -n
bandiera:
echo -n "hello" | md5sum
Uscita:
5d41402abc4b2a76b9719d911017c592 -
Vedi:help echo
o con printf:
printf "%s" "hello" | md5sum