#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. Спасибо вам, ребята, за объяснение!