Shell脚本将文件内容与字符串进行比较

时间:2016-08-31 21:48:47

标签: bash shell unix file-comparison

我有一个字符串“ABCD”和一个文件test.txt。我想检查文件是否只有这个内容“ABCD”。 通常我只使用“ABCD”获取文件,并且当我得到除此字符串之外的任何其他内容时我想发送电子邮件通知,因此我想检查这种情况。 请帮忙!

4 个答案:

答案 0 :(得分:12)

更新:我的原始答案会在无法匹配的情况下不必要地将大文件读入内存。任何多行文件都会失败,因此您最多只需读取两行。相反,请阅读第一行。如果它与字符串不匹配,如果第二个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

答案 1 :(得分:5)

这样的事情应该有效:

s="ABCD"
if [ "$s" == "$(cat test.txt)" ] ;then
    :
else
    echo "They don't match"
fi

答案 2 :(得分:4)

str="ABCD"
content=$(cat test.txt)
if [ "$str" == "$content" ];then
    # send your email
fi

答案 3 :(得分:0)

if [ "$(cat test.tx)" == ABCD ]; then
           # send your email
else
    echo "Not matched"
fi