【问题标题】:Storing openssl file digest as shell variable?将openssl文件摘要存储为shell变量?
【发布时间】:2014-06-17 10:54:52
【问题描述】:

我在 bash 中执行下面的命令

filehash=`openssl dgst -sha1 $filename`

当我回显 $filehash

我明白了

SHA1(myfile.csv)= bac9c755bac9709fa8966831d1731dff07e28e6c

我如何只获取存储的哈希值而不是字符串的其余部分,即

bac9c755bac9709fa8966831d1731dff07e28e6c

【问题讨论】:

  • 你可以通过管道连接到 awk|sed 来过滤

标签: bash openssl solaris


【解决方案1】:

在很多方面使用纯 Bash,例如。 G。通过截断从开始到最后一个空格的字符串:

filehash="$(openssl dgst -sha1 "$filename")"
filehash="${filehash##* }"

或使用从openssl 获得反向(-r)表示法的可能性:

read filehash __ < <(openssl dgst -sha1 -r "$filename")

显然awksed 或任何其他外部实用程序在这里都是多余的。请注意引号。

【讨论】:

    【解决方案2】:

    通过sed

    filehash=`openssl dgst -sha1 $filename | sed 's/^.*= //'`
    

    它会删除直到=(等号后跟一个空格)之前的所有字符。

    【讨论】:

    • 我还意识到我可以使用另一个名为“mac”的工具来代替 openssl。
    【解决方案3】:

    使用 sed 或 awk(如果您安装了它们):

    hash=$(echo $filehash | awk -F '=' '{ print $2 }')
    

    例如。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 2021-10-08
      • 2018-11-06
      • 2014-08-01
      • 1970-01-01
      相关资源
      最近更新 更多