Shell Script compare file content with a string

ashutosh tripathi picture ashutosh tripathi · Aug 31, 2016 · Viewed 35k times · Source

I have a String "ABCD" and a file test.txt. I want to check if the file has only this content "ABCD". Usually I get the file with "ABCD" only and I want to send email notifications when I get anything else apart from this string so I want to check for this condition. Please help!

Answer

chepner picture chepner · Aug 31, 2016

Update: My original answer would unnecessarily read a large file into memory when it couldn't possibly match. Any multi-line file would fail, so you only need to read two lines at most. Instead, read the first line. If it does not match the string, or if a second read succeeds at all, regardless of what it reads, then send the e-mail.

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

Just read in the entire file and compare it to the string:

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