suppress blank emails

Solution 1:

#!/bin/sh  

string=`some command`
len=${#string} 
if [ "$len" -gt "0" ]
   then echo $string | mail -s "tables altered on `hostname`" me@company.com
fi  

This will send the mail only if the output of the command is at least 1 character long, but this may include blanks etc.

(The solution above works, but is unnecessary. man mail reveals the -E option):

some command | mail -E -s "tables altered on `hostname`" me@company.com

Solution 2:

I use the following:

$ mail --exec 'set nonullbody' -s Test test@example.com

Which I found in the GNU mail documentation under the nullbody section.


Solution 3:

One-liner version of SvenW's answer (the creds should go to him, not me)

string=`some command`; [ "$len" -gt "0" ] && ( echo $string | mail -s "tables altered on `hostname`" me@company.com )