Bash - 如果一个命令失败,那么只发送stderr电子邮件并死掉,否则只发送OK电子邮件

时间:2016-06-08 13:08:50

标签: bash email command stderr

这个小脚本:

#!/bin/bash

set -e

MESSAGE='Import DB'
EMAIL='some@email'

{

# command ok
ls -la /etc

# command not ok (directory does not exist)
ls -la /boo

# command ok
ls -la /var

mail $EMAIL -s 'HSINFO ('$HOSTNAME'): '"$MESSAGE"' OK.'
exit 1

} 2> >(mail $EMAIL -s 'HSALARM ('$HOSTNAME'): '"$MESSAGE"' FAILED!')

应该这样做:

如果这些命令的一个命令失败,则使用sdterr发送电子邮件并死掉。 否则发送确认消息的电子邮件。

问题是 - 如果我用错误的命令评论行(/ boo dir不存在)并且其他所有命令都完成正常,我也会收到错误状态的电子邮件,而不仅仅是发送OK状态的电子邮件。

我怎样才能做我需要的事情?我认为在#34;> 2>(邮件......"行,或者不是?感谢。请不要使用cron重定向解决方案之前,脚本末尾的IF是关于IF的。

0 个答案:

没有答案