如何在一个命令中比较2个文件的md5总和?
我可以分别计算它们:
my_prompt$ md5sum file_1.sql
20f750ff1aa835965ec93bf36fd8cf22 file_1.sql
my_prompt$ md5sum file_2.sql
733d53913c366ee87b6ce677971be17e file_2.sql
但是我想知道如何将这些合并到一个比较计算中。我尝试过不同的方法,但都失败了:
my_prompt$ md5sum file_1.sql == md5sum file_2.sql
my_prompt$ `md5sum file_1.sql` == `md5sum file_2.sql`
my_prompt$ (md5sum file_1.sql) == (md5sum file_2.sql)
my_prompt$ `md5sum file_1.sql` -eq `md5sum file_2.sql`
我错过了什么?尝试跟踪Compare md5 sums in bash script和https://unix.stackexchange.com/questions/78338/a-simpler-way-of-comparing-md5-checksum,但运气不佳。
4条答案
按热度按时间6g8kf2rb1#
你需要一个程序/build-in来计算比较结果。通常你会使用
test
/[
/[[
来完成。使用这些程序-eq
比较十进制数。因此使用字符串比较=
代替。此命令的退出代码
$?
告诉您这两个字符串是否相等。但是,你可能想使用
cmp
来代替,这个程序直接比较文件,应该更快,因为它不需要计算任何东西,也更安全,因为它不会像哈希比较那样给予假阳性。omqzjyyz2#
通过将文件名作为参数传递给
md5sum
命令,我们将得到如下结果:因此,我们必须比较
md5sum
输出的第一列:在需要返回代码的情况下,可以使用
test
命令,如下所示:让我们分解命令:
pengsaosao3#
这将适用于bash
如果md5相等,两个文件都可以。您也可以对3个或更多的文件使用此方法。
owfi6suc4#
按照@Socowi的回答,有一种方法可以在一行中得到答案:
&&
和||
的作用相当于and
和or
。当&&
后跟||
时,它在其他编程语言中的作用相当于三元运算符。换句话说,如果md5 sum相等,则echo "Same content"
,否则echo "Different content"
。