我想要一个简单的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)" ]
使用
$(...)
获取命令输出记住将
$(...)
括在"
内bash测试支持字符串比较的single
=
,而不是double==
使用stdin和
<
重定向将文件重定向到md5sum。关于linux - Linux bash:比较哈希字符串而不设置变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52291082/