这个小脚本:
#!/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的。