2017-04-15 194 views
0

我使用的是Ubuntu 14.04。 我有一個存儲在a.txt文件中的md5哈希文本列表。現在我將輸入一個文本,我會散列它,並檢查結果是否在我的文件或不。我正在使用grep來執行此操作,但該腳本僅適用於靜態字符串。檢查文件中是否存在現有的md5sum - Shell腳本

我的腳本文件看起來像

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文件,我只有1行:

81dc9bdb52d04dc20036dbd8313ed055 - 

正如上面的腳本,你可以看到,我設置的s1值作爲靜態字符串和s2是散列結果。

,我得到的輸出:

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

,我可以在屏幕上看到 - s1s2有相同的值。在文件中找到s1,但不是s2。我不明白這裏有什麼問題以及如何解決。

+1

當輸入爲stdin時,我的md5實現(在FreeBSD上)不會輸出「 - 」。你確定它在嗎?那麼白色空間呢?你應該使用'echo's2:<$s2>「'。 – Jens

+0

我敢肯定s2的價值。您建議的輸出:s2:<81dc9bdb52d04dc20036dbd8313ed055 - > –

+1

好的。如果添加'if test'$ s1「=」$ s2「,結果如何?然後回聲相等;否則回聲不等; fi'? – Jens

回答

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///') 

來解決這個問題。

相關問題