检查现有md5sum是否存在于文件-Shell脚本中
我使用的是Ubuntu 14.04。 我有一个md5哈希文本列表,存储在检查现有md5sum是否存在于文件-Shell脚本中,shell,ubuntu,grep,md5sum,Shell,Ubuntu,Grep,Md5sum,我使用的是Ubuntu 14.04。 我有一个md5哈希文本列表,存储在a.txt文件中。现在我将输入一个文本,我将散列它并检查结果是否在我的文件中。我使用的是grep,但脚本只适用于静态字符串 我的脚本文件看起来像 file="a.txt" s1="81dc9bdb52d04dc20036dbd8313ed055 -" echo "s1: "$s1 s2=$(echo -n "1234" | md5sum) echo "s2: "$s2 if grep -Fx "$s1" "$file"
a.txt
文件中。现在我将输入一个文本,我将散列它并检查结果是否在我的文件中。我使用的是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中找不到。我不明白这里出了什么问题以及如何修复。$s1
包含一个空格。echo-n“1234”| md5sum的输出包含两个
替换
echo "s1: "$s1
echo "s2: "$s2
s2=$(echo -n "1234" | md5sum)
借
看看这个问题
替换
echo "s1: "$s1
echo "s2: "$s2
s2=$(echo -n "1234" | md5sum)
借
解决此问题。当输入为stdin时,我的md5实现(在FreeBSD上)不会输出“-”。你确定它在那儿吗?空白区呢?您应该使用echo“s2:
。我确信s2的值。输出如您所建议的:s2:好。如果测试“$s1”=“$s2”,则添加时的结果是什么;然后回声相等;否则回声不相等;fi
?您还应该将set-x
放在靠近顶部的位置,以便在shell中启用跟踪模式。正如Cyrus在下面所说的,当s1只有1时,my s2字符串实际上在减号之前有2个空格。您通过添加额外<和>的检查显示了问题,但我没有注意到。