openssl, stdin, echo и <<<: обработка задней строки - PullRequest
0 голосов
/ 05 мая 2019

ДВА ВОПРОСА :

  1. Есть ли краткий способ убрать завершающий \ n из стандартного версия при использовании
  2. Есть ли название для <<<, которое будет помочь при поиске ответов на подобные вопросы? (<em> 'IFS' и 'три ​​левых угловых скобки' и т. Д. Не были особенно звездными поисковыми терминами.)

Деталь

Следующие команды передают завершающий \ n в MacOS Terminal:

Версия A (с использованием эха)

    echo SomeText | openssl dgst -sha512 -hex -hmac SomeHmacKey

Версия B - (с использованием <<<) </p>

    openssl dgst -sha512 -hex -hmac SomeHmacKey <<< SomeText

Результаты обеих версий A и B равны 858337c9909dccb8cb21293f057bd8aa1a90a5ea084b36825e28f8f6a2ef9d813a991dfa7d25fe4afd1f78004213a23dd4e71e05e4cea7f9ad4bf1c5adbd224a, что является результатом для SomeText\n, в отличие от SomeText

Для удаления конечного LF в версии A я использовал решение

    echo -n SomeText | openssl dgst -sha512 -hex -hmac SomeHmacKey

Есть ли краткий способ убрать завершающий \ n из stdin из версия B (т.е. при использовании <<<)? </p>

1 Ответ

1 голос
/ 06 мая 2019

<<, <<< и другие подобные конструкции известны как операторы перенаправления .

<<<, в частности, известны как "здесь строка".Тот факт, что он добавляет новую строку и причину, по которой хорошо задокументировано здесь .

Относительно того, как обойти эту проблему, вы уже знаете хороший способ: просто труба echo -n SomeTextиспользования строки здесь.

...