【发布时间】:2012-08-09 00:11:39
【问题描述】:
下面是我运行良好的 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
我需要通过使用上面的shell script 将以上所有这三件事通过电子邮件发送到我们有DL-host@company.com 的电子邮件组,或者假设我有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
【问题讨论】:
-
你错过了他使用
{和}对 echo 语句进行分组的部分。 -
运行第一个查询两次只是为了提取不同的输出字段是什么?
-
@tripleee,你是什么意思?我无法理解。你能举个例子吗?
-
完全避免反引号,运行
hive ... query 1 text ... | awk '{ print "Total Items Purchased" $1; print "Total Items Missing or Mismatch:" $2 }'。总的来说,为了echoing 输出而大量过度使用反引号;echos 不优雅,在某些情况下有问题。
标签: linux email shell unix solaris