Email 如果nawk返回null,则阻止发送电子邮件
在这里的另一个用户的帮助下,我能够让我的脚本成功地定期向我发送电子邮件。我的下一个问题是,我想让它只在输出不为空时给我发电子邮件 我设置了一个nawk,通过电子邮件将输出发送给我,并且脚本设置为通过crontab每5分钟运行一次。由于日志文件的数量,这意味着我每5分钟会收到9封电子邮件,这会炸毁我的收件箱 当前脚本:Email 如果nawk返回null,则阻止发送电子邮件,email,crontab,nawk,Email,Crontab,Nawk,在这里的另一个用户的帮助下,我能够让我的脚本成功地定期向我发送电子邮件。我的下一个问题是,我想让它只在输出不为空时给我发电子邮件 我设置了一个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])pri
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
为了测试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"
输出=$(
纳克
$0~s{for(c=NR-b;c使用hedder的建议。我能够将结果输出到一个临时文件,然后运行他的if/then语句,如果它不为空,就给我自己发电子邮件。我已经确认它现在起作用了。可以应用一些“高级”语法,但简单的解决方案是将nawk输出重定向到tmp文件中,然后使用if[[-s tmpFile]];然后mailx-s。。。user1@mycomp.com,usr2@xyz.com
祝你好运!因此我将在nawk脚本的末尾添加“>/home/me/crontmp”,而不是发送电子邮件。然后在第二行添加“if[[-s/home/me/crontmp]];然后是mail-s”输出测试" myemail@mail.comnawk
时,这对我来说意味着你在使用Solaris。@Glenjackman的解决方案无法与顶部的std#!/bin/ksh
正常工作。请尝试#!/usr/xpg4/bin/ksh
或dtksh
的srch。基本上,Solaris中的ksh是ksh88,你必须找到ksh93隐藏的地方。(我再也不能访问Solaris机器了)。祝你好运。我们的shell是KSH。我应该早点提到这一点。
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"