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
,我可以在屏幕上看到 - s1
和s2
有相同的值。在文件中找到s1
,但不是s2
。我不明白這裏有什麼問題以及如何解決。
當輸入爲stdin時,我的md5實現(在FreeBSD上)不會輸出「 - 」。你確定它在嗎?那麼白色空間呢?你應該使用'echo's2:<$s2>「'。 – Jens
我敢肯定s2的價值。您建議的輸出:s2:<81dc9bdb52d04dc20036dbd8313ed055 - > –
好的。如果添加'if test'$ s1「=」$ s2「,結果如何?然後回聲相等;否則回聲不等; fi'? – Jens