将openssl文件摘要存储为shell变量?

时间:2014-06-17 10:54:53

标签: bash openssl solaris

我正在bash中执行以下命令

filehash=`openssl dgst -sha1 $filename`

当我回复$ filehash

我明白了

  

SHA1(myfile.csv)=   bac9c755bac9709fa8966831d1731dff07e28e6c

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

  

bac9c755bac9709fa8966831d1731dff07e28e6c

由于

3 个答案:

答案 0 :(得分:3)

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

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

或使用从-r获取反向(openssl)符号的可能性:

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

显然awksed或任何其他外部工具在这里都是过度的。请注意引用。

答案 1 :(得分:1)

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

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

例如。

答案 2 :(得分:1)

通过sed

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

删除=之前的所有字符(等号后跟空格)。