bash命令在发送电子邮件之前停止程序

时间:2017-11-20 20:28:42

标签: bash

我目前有一个预定的工作,如果有任何提醒,它会执行并发送电子邮件。现在,我需要更改作业,以便只有在有新警报时它才会发送电子邮件。我使用以下命令:

ALERT_COUNT=`ps -ef|grep myscript.pl|grep $alertCnt grep`

if [ $ALERT_COUNT -lt 0 ];
then exit 0; fi

echo "${EMAILBODY}" | mailx -r ${SENDER} -s "Alerts Email for $(date +%Y-%m-%d_%H:%M)" abcd@xyz.com

其中$ alertcnt是计算perl脚本中警报的变量。

但即使没有新警报,该作业仍会完成执行并发送电子邮件。

我也尝试了以下选项,但它没有工作:

ALERT_COUNT=`ps -ef|grep myscript.pl|grep $alertCnt grep`
Value="0"

if echo "$ALERT_COUNT" | grep -q "$Value"; then
    echo "No Alerts Found";
fi

1 个答案:

答案 0 :(得分:0)

我认为一个简单的解决方案是将新警报输出到一个文件,如果#大于0,你的bash脚本可以读入该函数并执行操作。

count.txt

12

emailer.sh

  1. 运行perl脚本>输出到count.txt
  2. 读取count.txt的行> $ COUNT
  3. if $ COUNT> 0:继续,如果没有,退出
  4. 删除count.txt(确保您始终只有一个当前值)