我正在bash中执行以下命令
filehash=`openssl dgst -sha1 $filename`
当我回复$ filehash
时我明白了
SHA1(myfile.csv)= bac9c755bac9709fa8966831d1731dff07e28e6c
我如何只获取存储的哈希值,而不是字符串的其余部分,即
bac9c755bac9709fa8966831d1731dff07e28e6c
由于
答案 0 :(得分:3)
在很多方面使用纯Bash,e。 G。通过从开始到最后一个空格截断字符串:
filehash="$(openssl dgst -sha1 "$filename")"
filehash="${filehash##* }"
或使用从-r
获取反向(openssl
)符号的可能性:
read filehash __ < <(openssl dgst -sha1 -r "$filename")
显然awk
,sed
或任何其他外部工具在这里都是过度的。请注意引用。
答案 1 :(得分:1)
使用sed或awk(如果安装了它们):
hash=$(echo $filehash | awk -F '=' '{ print $2 }')
例如。
答案 2 :(得分:1)
通过sed
,
filehash=`openssl dgst -sha1 $filename | sed 's/^.*= //'`
删除=
之前的所有字符(等号后跟空格)。