我想要一个简单的 bash 命令来比较两个哈希值,输出它们是否相同。这是我尝试过的:
md5sum file1 | awk '{print $1}' # outputs hash value without filename
md5sum file1 > md5sum file2 # no output even though files/hashes differ
我已经尝试了以下方法,但到目前为止没有成功:
[ md5sum states.txt | awk '{print $1}' == md5sum states_copy.txt | awk '{print $1}' ]`
[ (md5sum states.txt | awk '{print $1}') == (md5sum states_copy.txt | awk '{print $1}') ]
我对脚本或多行 bash 解决方案持开放态度,或使用 shasum,但我对 Linux 和 bash 很陌生,因此尝试使其尽可能简单。
我运行的是 Ubuntu 18.04。
[ "$(<states.txt md5sum)" = "$(<states_copy.txt md5sum)" ]
$(...)
获取命令输出$(...)
括在"
=
进行字符串比较,而不是双 ==
<
重定向将文件重定向到 md5sum。 有很多方法可以实现,既然你用过awk,你可以尝试:
md5sum f1 f2|awk '{a[$1]}END{print NR==length(a)}'
如果两个哈希值相同,则输出
0
,否则输出1
。您可以添加更多文件到md5sum
:
md5sum f1 f2 f3...fn|awk '{a[$1]}END{print NR==length(a)}'