web-dev-qa-db-ja.com

シェルスクリプトはファイルの内容を文字列と比較します

文字列「ABCD」とファイルtest.txtがあります。ファイルにこのコンテンツ「ABCD」のみが含まれているかどうかを確認したい。通常、「ABCD」のみを含むファイルを取得し、この文字列以外の何かを取得したときに電子メール通知を送信したいので、この状態を確認します。助けてください!

6

更新:私の元の答えは、一致する可能性がない場合、不必要に大きなファイルをメモリに読み込みました。複数行のファイルは失敗するため、せいぜい2行読み取るだけで済みます。代わりに、最初の行を読みます。文字列と一致しない場合、または読み取る内容に関係なく、2番目のreadがまったく成功した場合は、電子メールを送信します。

str=ABCD
if { IFS= read -r line1 &&
     [[ $line1 != $str ]] ||
     IFS= read -r $line2
   } < test.txt; then
    # send e-mail
fi 

ファイル全体を読み込んで、文字列と比較するだけです。

str=ABCD
if [[ $(< test.txt) != "$str" ]]; then
    # send e-mail
fi
15
chepner

このようなものはうまくいくはずです:

s="ABCD"
if [ "$s" == "$(cat test.txt)" ] ;then
    :
else
    echo "They don't match"
fi
7
NickD
str="ABCD"
content=$(cat test.txt)
if [ "$str" == "$content" ];then
    # send your email
fi
5
Scott Wang
if [ "$(cat test.tx)" == ABCD ]; then
           # send your email
else
    echo "Not matched"
fi
0
sachin_ur