Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 如果nawk返回null,则阻止发送电子邮件_Email_Crontab_Nawk - Fatal编程技术网

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

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,通过电子邮件将输出发送给我,并且脚本设置为通过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

为了测试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"