Ответ @ Сайруса точно соответствует тому, как решить эту проблему - чтобы объяснить, при использовании echo
он выведет новую строку в конце строки. Как вы видите на этом онлайн-выводе, hello
с новой строкой выводится именно тот MD5, который вы получали ранее. Использование -n
подавляет символ новой строки, а затем даст вам ожидаемый результат.
Редактировать :
Вы можете видеть это ясно, если вы выводите его в hexdump
, который показывает шестнадцатеричное число байтов там.
$ 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
эхо не ставит новую строку ( \n
) в конце
Теперь с пустой строкой
$ echo "" | hd 00000000 0a |.|
Просто персонаж Новой Линии
$ echo -n "" | hd
Пустая строка, поэтому hexdump
не выводится