我正在使用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
正如我在屏幕上看到的那样 - s1
和s2
具有相同的价值。 s1
位于文件中,但不是s2
。我不明白这里有什么问题以及如何解决。
答案 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/ / /')
解决此问题。