我正在尝试编写一个简单的脚本,如果“grep”带有结果,则发送带有结果的电子邮件。但是,我还希望在没有拒绝的情况下发送电子邮件
#! /bin/bash
FILE=$(find . /opt/FIXLOGS/l51prdsrv* -iname "TRADX_*.log" -type f -exec grep -F 103=16 {} /dev/null \; )>> Rejects.txt
if [ "$FILE" == true ]
then
mailx -s "Logs $(date +%d-%m-%y)" "email" < Rejects.txt
rm -f Rejects.txt
elif [ "$FILE" == null ]
then
echo "No Rejects" >> Rejects.txt
mailx -s "Logs $(date +%d-%m-%y)" "email" < Rejects.txt
rm -f Rejects.txt
fi
1条答案
按热度按时间o4tp2gmn1#
null
是一个字符串,而不是像其他语言中那样的空引用。true
也是一个字符串(除非它是 commandtrue
,但在您的比较中不是这种情况)。如果你想测试一个文件是否存在,你可以使用
[[ -f "$FILE" ]]
,但是,即使grep
不匹配任何东西,这个文件也会存在,因为当你把它设置为输出目标时,bash会自动创建这个文件,你真正需要的是-s
,它测试这个文件是否存在,并且大小是否大于0。