Разные значения суммы md5 из сценария и командной строки

#linux #bash #macos

#linux #bash #macos

Вопрос:

Я пишу скрипт bash для автоматизации. Мне нужно получить сумму строки md5. Однако скрипт выдает мне другую (неправильную) сумму, чем команда в терминале. В чем разница? Я работаю на macOS.

Командная строка:

echo -n "test" | md5

вывод (правильный): 098f6bcd4621d373cade4e832627b4f6

Скрипт Bash:

 #!/bin/bash

URLMD5=`echo -n "test" | md5`
echo $URLMD5
  

вывод (неверный):
a2a2862cba31e1cdeeaccf9937a248d2

Редактировать:

Я просто помещаю скрипт @ linux machine, меняю md5 на md5sum , и это дает мне правильное значение 098f6bcd4621d373cade4e832627b4f6

Комментарии:

1. Я предполагаю, что это одна из многих причин, которых следует избегать echo -n . Вместо этого вы хотите printf . (Кроме того, обратные ссылки громоздки и имеют некоторые сомнительные угловые случаи; современный синтаксис подстановки команд был стандартным в течение более чем 20 лет IIRC.)

2. объяснение комментария @tripleee основано на справочной странице echo, некоторые оболочки могут предоставлять встроенную команду echo, которая похожа или идентична этой утилите. Наиболее примечательно, что встроенное эхо в sh(1) не принимает параметр -n. Обратитесь к встроенной странице руководства (1).

3. Спасибо вам, ребята, за объяснение!