2

在此处的另一个用户的帮助下,我能够让我的脚本定期成功地通过电子邮件发送给我。我的下一个问题是,如果输出不为空,我希望它只给我发电子邮件。

我设置了一个 nawk 来将输出通过电子邮件发送给我,并且脚本设置为通过 crontab 每 5 分钟运行一次。由于日志文件的数量,这意味着我每 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
4

2 回答 2

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"

我假设你的外壳是 bash。

于 2013-09-10T17:31:57.717 回答
0

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

于 2013-09-10T18:30:26.893 回答