如果nawk返回null,则阻止发送电子邮件

时间:2013-09-10 15:55:34

标签: email crontab nawk

我能够让我的脚本在另一位用户的帮助下定期给我发电子邮件。我的下一个问题是,如果输出不为空,我只想给它发电子邮件。

我有一个nawk设置给我发送电子邮件输出,脚本设置为每隔5分钟通过crontab运行一次。由于日志文件的数量,这意味着我每5分钟收到9封电子邮件,这会炸毁我的收件箱。

当前脚本:

nawk '$0~s{for(c=NR-b;c<=NR+a;c++)r[c]=1}{q[NR]=$0}END{for(c=1;c<=NR;c++)if(r[c])print q[c]}' b=4 a=4 s="Bind value for HASCHILDREN = 0" filename | mail -s "Output from crontask" myemail

当前的crontab:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/me/crontask

2 个答案:

答案 0 :(得分:1)

为了测试nawk命令的输出,您需要将其保存在某处。我建议你使用一个变量:

output=$(
    nawk '
        $0 ~ s {for (c=NR-b; c<=NR+a; c++) r[c]=1}
        {q[NR] = $0}
        END {for (c=1; c<=NR; c++) if (r[c]) print q[c]}
    ' b=4 a=4 s="Bind value for HASCHILDREN = 0" filename
)
[[ "$output" ]] && mail -s "Output from crontask" me@example.com <<< "$output"

我认为你的shell是bash。

答案 1 :(得分:0)

使用Shelter的建议。我能够将结果输出到一个临时文件,然后运行他的if / then语句给自己发电子邮件,如果它不是null。我已经确认它现在正在运作。