@Cyrusの答えは、これを解決する方法と正確に一致しています-説明するには、 echo
を使用する場合 文字列の最後に改行を出力します。このオンライン出力でわかるように、 hello
改行を使用すると、以前に取得していた MD5 が正確に出力されます。 -n
の使用 改行を抑制し、期待どおりの結果が得られます。
編集 :
hexdump
まで出力するとよくわかります 、そこにあるバイトの 16 進数を示します。
$ echo "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 0a |str_example.|
0a
を参照してください (\n
) 文字列の最後
$ echo -n "str_example" | hd
00000000 73 74 72 5f 65 78 61 6d 70 6c 65 |str_example|
-n
で echo は改行を入れません (\n
)最後に
空の文字列を使用
$ echo "" | hd
00000000 0a |.|
改行文字のみ
$ echo -n "" | hd
空の文字列なので hexdump
出力がありません
デフォルトでは、echo
出力の最後に改行文字が含まれます。ただし、使用した PHP とオンライン サイトには改行が含まれていません。改行文字を抑制するには、-n
を使用します フラグ:
echo -n "hello" | md5sum
出力:
5d41402abc4b2a76b9719d911017c592 -
参照:help echo
または printf:
printf "%s" "hello" | md5sum