为什么这个字符串比较不起作用?

问题描述 投票:0回答:1

我试图将 md5 哈希值与保存在文件中的哈希值进行比较,结果是哈希值始终不相等,即使它们相等:

#!/bin/bash

checksum=$(ls <FOLDER> | md5sum)
last_checksum=$(cat CHECKSUM)

if [ "$checksum" != "$last_checksum" ]; then
    echo -n $checksum > CHECKSUM
    echo CHECKSUMS ARE UNEQUAL
fi

打印两个校验和相等。

bash if-statement comparison double-quotes
1个回答
1
投票

这是因为

echo -n $checksum
没有保留哈希值和文件名之间的双空格
-
,这意味着如果
$checksum
包含

49a6b6e584f20a28509c1da3c311cda6  -

那么写入文件的内容将是

49a6b6e584f20a28509c1da3c311cda6 -

引号将有助于保留原始字符串:

echo -n "$checksum" > CHECKSUM

您还可以删除校验和的文件名部分,因为这并不有趣:

checksum=$(ls . | md5sum | cut -d' ' -f1)
© www.soinside.com 2019 - 2024. All rights reserved.