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

Shell Script compare file content with a string

我有一个字符串 "ABCD" 和一个文件 test.txt。我想检查文件是否只有这个内容"ABCD"。 通常我只得到带有 "ABCD" 的文件,当我得到除了这个字符串之外的任何其他东西时我想发送电子邮件通知所以我想检查这种情况。 请帮忙!

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

像这样的东西应该可以工作:

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