检查文件中存在的现有md5sum - Shell脚本

时间:2017-04-15 10:47:16

标签: shell ubuntu grep md5sum

我正在使用Ubuntu 14.04。 我有一个存储在a.txt文件中的md5哈希文本列表。现在我将输入一个文本,我将散列它并检查结果是否在我的文件中。我正在使用grep来执行此操作,但脚本只适用于静态字符串。

我的脚本文件看起来像

file="a.txt"
s1="81dc9bdb52d04dc20036dbd8313ed055 -"
echo "s1: "$s1

s2=$(echo -n "1234" | md5sum)
echo "s2: "$s2


if grep -Fx "$s1" "$file"; then
        echo 's1 FOUND'
else
        echo 's1 NOT FOUND'
fi

if grep -Fx "$s2" "$file"; then
        echo 's2 FOUND'
else
        echo 's2 NOT FOUND'
fi

a.txt文件中,我只有一行:

81dc9bdb52d04dc20036dbd8313ed055 -

如上面的脚本,你可以看到,我将s1的值设置为静态字符串,而s2是散列的结果。

我得到的输出:

s1: 81dc9bdb52d04dc20036dbd8313ed055 -
s2: 81dc9bdb52d04dc20036dbd8313ed055 -
81dc9bdb52d04dc20036dbd8313ed055 -
s1 FOUND
s2 NOT FOUND

正如我在屏幕上看到的那样 - s1s2具有相同的价值。 s1位于文件中,但不是s2。我不明白这里有什么问题以及如何解决。

1 个答案:

答案 0 :(得分:0)

$s1包含一个空格。 echo -n "1234" | md5sum的输出包含两个。

替换

echo "s1: "$s1
echo "s2: "$s2

通过

echo "s1: $s1"
echo "s2: $s2"

看到问题。

替换

s2=$(echo -n "1234" | md5sum)

通过

s2=$(echo -n "1234" | md5sum | sed 's/  / /')

解决此问题。