MD5 校验和在后续运行中以相同的输出更改



我正在尝试将用户列表保存在带有校验和的日志文件中,并在用户列表更改时匹配下一次出现的输出并基于此执行语句。我想出了下面的脚本,但即使用户列表没有改变,"newhash"变量也会生成一个新的哈希值。对我做错了什么有什么帮助吗?

#!/bin/bash
listuser=$(awk -F: 'BEGIN{OFS=":"} $3 >= 1000 && $3<=65534 {print $1,$6}' /etc/passwd)
echo -e "$listuser" | md5sum > /var/log/current_users.log
hashfile=/var/log/current_users.log
newhash=$("$listuser" | md5sum)
oldhash=$(cat $hashfile)
if [[ "newhash" != "oldhash" ]]; then
echo "test"
fi
echo "$newhash" > /
var/log/current_users.log

有问题的行是

newhash=$("$listuser" | md5sum)

它应该是

newhash=$(echo "$listuser" | md5sum)

前者执行listuser的内容,因为它是一个命令。

编辑:正如user1934428所指出的,另一个问题是标识符之前的"$"在"newhash"中丢失!="oldhash"

最新更新