Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查现有md5sum是否存在于文件-Shell脚本中_Shell_Ubuntu_Grep_Md5sum - Fatal编程技术网

检查现有md5sum是否存在于文件-Shell脚本中

检查现有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"

我使用的是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"; 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个空格。您通过添加额外<和>的检查显示了问题,但我没有注意到。