我试图将 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
打印两个校验和相等。
这是因为
echo -n $checksum
没有保留哈希值和文件名之间的双空格-
,这意味着如果$checksum
包含
49a6b6e584f20a28509c1da3c311cda6 -
那么写入文件的内容将是
49a6b6e584f20a28509c1da3c311cda6 -
引号将有助于保留原始字符串:
echo -n "$checksum" > CHECKSUM
您还可以删除校验和的文件名部分,因为这并不有趣:
checksum=$(ls . | md5sum | cut -d' ' -f1)