我想要一个简单的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。
答案 0 :(得分:5)
[ "$(<states.txt md5sum)" = "$(<states_copy.txt md5sum)" ]
$(...)
获取命令输出$(...)
放在"
内=
进行字符串比较,而不支持双==
<
重定向将文件重定向到md5sum中。 答案 1 :(得分:1)
有很多方法可以执行此操作,因为您使用过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)}'