openssl,stdin,echo和<<<:处理尾随换行符

时间:2019-05-05 19:18:32

标签: macos openssl command-line-interface stdin lf

两个问题

  1. 是否有一种简洁的方法来去除标准输入的结尾\ n 使用<<时的版本
  2. 是否有<<<的名称, 搜索此类问题的答案时有帮助? ('IFS''三个左尖括号'等并不是特别出色的搜索词。)

详细信息

以下命令在MacOS终端上输入尾随\ n:

版本A(使用回显)

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

版本B-(使用<<<)

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

A和B版本的结果均为858337c9909dccb8cb21293f057bd8aa1a90a5ea084b36825e28f8f6a2ef9d813a991dfa7d25fe4afd1f78004213a23dd4e71e05e4cea7f9ad4bf1c5adbd224a,这是SomeText\n的结果,而不是SomeText

要在版本A上剥离尾随LF,我使用了解决方案

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

是否有一种简洁的方法来去除标准输入的结尾\ n     版本B(即使用<<<时)?

1 个答案:

答案 0 :(得分:1)

MPI_Init()<<和其他此类构造称为redirection operators

<<<特别是被称为“这里字符串”。它添加了换行符的事实及其原因here有据可查。

关于如何解决此问题,您已经知道一种好方法:只需使用管道<<<而不是使用here字符串即可。