Linux bash:不设置变量比较哈希字符串
Linux bash: Compare hash strings without setting variables
我想要一个简单的bash命令来比较两个哈希值,输出它们是否相同。这是我尝试过的:
md5sum file1 | awk '{print }' # outputs hash value without filename
md5sum file1 > md5sum file2 # no output even though files/hashes differ
到目前为止,我尝试了以下变体但没有成功:
[ md5sum states.txt | awk '{print }' == md5sum states_copy.txt | awk '{print }' ]
[ (md5sum states.txt | awk '{print }') == (md5sum states_copy.txt | awk '{print }') ]
我对脚本或多行 bash 解决方案或使用 shasum 持开放态度,但我是 Linux 和 bash 的新手,所以我尽量保持原样越简单越好。
我 运行 Ubuntu 18.04.
[ "$(<states.txt md5sum)" = "$(<states_copy.txt md5sum)" ]
- 使用
$(...)
获取命令输出
- 记得把
$(...)
放在"
里面
- Bash 测试支持单
=
进行字符串比较,不支持双 ==
- 使用 stdin 和
<
重定向将文件重定向到 md5sum。
有很多种方法,既然你用过awk,你可以试试:
md5sum f1 f2|awk '{a[]}END{print NR==length(a)}'
如果两个哈希相同,则输出0
,否则1
。您可以将更多文件添加到 md5sum
:
md5sum f1 f2 f3...fn|awk '{a[]}END{print NR==length(a)}'
我想要一个简单的bash命令来比较两个哈希值,输出它们是否相同。这是我尝试过的:
md5sum file1 | awk '{print }' # outputs hash value without filename
md5sum file1 > md5sum file2 # no output even though files/hashes differ
到目前为止,我尝试了以下变体但没有成功:
[ md5sum states.txt | awk '{print }' == md5sum states_copy.txt | awk '{print }' ]
[ (md5sum states.txt | awk '{print }') == (md5sum states_copy.txt | awk '{print }') ]
我对脚本或多行 bash 解决方案或使用 shasum 持开放态度,但我是 Linux 和 bash 的新手,所以我尽量保持原样越简单越好。
我 运行 Ubuntu 18.04.
[ "$(<states.txt md5sum)" = "$(<states_copy.txt md5sum)" ]
- 使用
$(...)
获取命令输出 - 记得把
$(...)
放在"
里面
- Bash 测试支持单
=
进行字符串比较,不支持双==
- 使用 stdin 和
<
重定向将文件重定向到 md5sum。
有很多种方法,既然你用过awk,你可以试试:
md5sum f1 f2|awk '{a[]}END{print NR==length(a)}'
如果两个哈希相同,则输出0
,否则1
。您可以将更多文件添加到 md5sum
:
md5sum f1 f2 f3...fn|awk '{a[]}END{print NR==length(a)}'