下面是我的shell脚本,它运行正常。
#!/bin/bash
DATE_YEST_FORMAT2=`perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*96);'`
echo $DATE_YEST_FORMAT2
QUERY1=`hive -e "
set mapred.job.queue.name=hdmi-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='$DATE_YEST_FORMAT2';`
QUERY2=`hive -e "
set mapred.job.queue.name=hdmi-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='$DATE_YEST_FORMAT2';"`
echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`"
echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`"
echo "Error Percentage: $QUERY2"
我正在运行上面的shell脚本 -
sh -x test.sh
问题陈述: -
从上面的shell脚本中,我得到了最后三个echo语句中的三件事 -
Total items purchased
Total Items MissingorMismatch
Error Percentage
我需要通过电子邮件将上述所有这三件事发送到我们的电子邮件组DL-host@company.com
,方法是使用上面的shell script
或假设我需要10 email list
。发送具有相同内容和主题的电子邮件,然后我想,我可以将所有这10个电子邮件列表存储在某个变量中,只需从那里读取并继续发送,对吧?这有可能吗?我正在考虑下面这样的电子邮件结构,只是非常简单。
主题
测试数据
邮件正文
Total items purchased:- Some Number
Total Items MissingorMismatch:- Some Number
Error Percentage:- Some Number
任何想法都将受到赞赏。
更新,在尝试了larsks建议后,我只收到电子邮件中的最后一个echo语句,这意味着只有一个错误百分比,而不是全部三个: -
#!/bin/bash
DATE_YEST_FORMAT2=`perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*96);'`
echo $DATE_YEST_FORMAT2
QUERY1=`hive -e "
set mapred.job.queue.name=hdmi-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='$DATE_YEST_FORMAT2';`
QUERY2=`hive -e "
set mapred.job.queue.name=hdmi-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='$DATE_YEST_FORMAT2';"`
echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`"
echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`"
echo "Error Percentage: $QUERY2" | mail -s "Test Data" rj@host.com
答案 0 :(得分:5)
您通常使用/bin/mail
程序从shell脚本发送电子邮件。您在命令行和stdin
上的邮件正文中提供主题和收件人。例如,在您的脚本中,您可以执行以下操作:
{
echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`"
echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`"
echo "Error Percentage: $QUERY2"
} | mail -s "Test Data" DL-host@company.com
您还可以将现有脚本的输出通过管道传输到mail
(如果您不想修改脚本,或者您只想发送邮件的时间):
<your script> | mail -s "Test Data" DL-host@company.com
您可以在命令行中指定多个收件人,因此:
... | mail -s "Test Data" address1@company.com address2@company.com
等等。