2017-04-15 2 views
0

私はUbuntu 14.04を使用しています。 a.txtファイルに格納されているmd5ハッシュテキストのリストがあります。今私はテキストを入力します、私はそれをハッシュし、結果が私のファイルにあるかどうかをチェックします。私はそれを行うにはgrepを使用していますが、スクリプトは静的な文字列のために働くだけです。私のようにs1の値を設定し、ファイル内に既存のmd5sumが存在するか確認する - シェルスクリプト

上記のスクリプトとして
81dc9bdb52d04dc20036dbd8313ed055 - 

、あなたが見ることができます:

は私のスクリプトファイルはa.txtファイルで

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 

、私は唯一の1つのラインを持っているように見えます静的な文字列であり、s2はハッシュの結果です。

私が得た出力:

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

を私は、画面上で見ることができるように - s1s2が同じ値を持っています。 s1がファイルに見つかりましたが、s2では見つかりませんでした。私はここに何が間違っていて、修正するかを理解していません。

+1

md5(FreeBSD上)を実装しても、入力が標準入力の場合は " - "は出力されません。あなたはそこにいると確信していますか?ホワイトスペースはどうですか? 'echo" s2:<$s2> "'を使うべきです。 – Jens

+0

私はs2の値を確信しています。提案通りの出力:s2:<81dc9bdb52d04dc20036dbd8313ed055 - > –

+1

OK。 '$ s1" = "$ s2"というテストを追加した場合の結果は何ですか?次にエコーは等しい。そうでなければエコー不一致です。 fi'? – Jens

答えて

0

$s1には1つのスペースが含まれます。 echo -n "1234" | md5sumの出力には2つが含まれます。


問題を見て

echo "s1: $s1" 
echo "s2: $s2" 

によって

echo "s1: "$s1 
echo "s2: "$s2 

を交換してください。


この問題を解決するために

s2=$(echo -n "1234" | md5sum | sed 's///') 

によって

s2=$(echo -n "1234" | md5sum) 

を交換してください。

関連する問題