使用shell脚本发送电子邮件并附加查询的输出
下面是我运行两个配置单元SQL查询的shell脚本。这很好用使用shell脚本发送电子邮件并附加查询的输出,shell,unix,hadoop,solaris,hive,Shell,Unix,Hadoop,Solaris,Hive,下面是我运行两个配置单元SQL查询的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 hive -e " set mapred.job.queue.name=data-technology; SELECT SUM(total_items
#!/bin/bash
DATE_YEST_FORMAT2=`perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d",localtime(time()- 3600*96);'`
echo $DATE_YEST_FORMAT2
hive -e "
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='$DATE_YEST_FORMAT2';
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='$DATE_YEST_FORMAT2';"
我像这样运行上面的shell脚本-
sh -x test.sh
问题陈述:-
如果您看到我的第一个SELECT查询,它将给我两列作为输出,即已购买的项目总数和丢失的项目总数。我的第二个选择将给出这些列的百分比
我需要使用上面的SHELL脚本
在电子邮件中发送这三个详细信息。基本上我需要在电子邮件中发送这三件事
从第一个查询开始-我需要发送-
total_items_purchased and total_items_missingormismatch
Percentage that I am calculating.
从第二个查询中,我需要发送-
total_items_purchased and total_items_missingormismatch
Percentage that I am calculating.
电子邮件可以是这样,也可以是更好的方法-
Total Items Purchased:- Some Number
Total Items MissingorMismatch:- Some Number
Error Percentage:- Some Percentage
如有任何建议,将不胜感激
更新:
bash-3.00$ sh -x emailtest.sh
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='20120804';
+ QUERY1 = 3443837 448750
emailtest.sh: QUERY1: not found
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='20120804';
+ QUERY2 = 13.030523802375084
emailtest.sh: QUERY2: not found
+ awk {print $1}
+ echo
+ echo Total items purchased:
Total items purchased:
+ awk {print $2}
+ echo
+ echo Total Items MissingorMismatch:
Total Items MissingorMismatch:
+ echo Error Percentage:
Error Percentage:
在对Shell脚本进行更改后,我运行了下面的Shell脚本-
#!/bin/bash
QUERY1 = `hive -e "
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='20120804';`
QUERY2 = `hive -e "
set mapred.job.queue.name=data-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='20120804';"`
echo "Total items purchased: `echo $QUERY1 | awk '{print $1}'`"
echo "Total Items MissingorMismatch: `echo $QUERY1 | awk '{print $2}'`"
echo "Error Percentage: $QUERY2"
我认为不正确的输出?脚本有问题吗?当我运行SunOS时:
bash-3.00$ sh -x emailtest.sh
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT SUM(total_items_purchased), SUM(total_items_missingormismatch) from lip_data_quality where dt='20120804';
+ QUERY1 = 3443837 448750
emailtest.sh: QUERY1: not found
+ hive -e
set mapred.job.queue.name=data-technology;
SELECT 100 * SUM(total_items_missingormismatch*1.0) / SUM(total_items_purchased) FROM lip_data_quality where dt='20120804';
+ QUERY2 = 13.030523802375084
emailtest.sh: QUERY2: not found
+ awk {print $1}
+ echo
+ echo Total items purchased:
Total items purchased:
+ awk {print $2}
+ echo
+ echo Total Items MissingorMismatch:
Total Items MissingorMismatch:
+ echo Error Percentage:
Error Percentage:
脚本中的几个部分工作正常,但我想最后三个echo语句工作不正常。我的解决方案,公认是老派的,将使用awk通过在脚本中附加以下内容来解析输出: 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" QUERY1=`hive-e“ 设置mapred.job.queue.name=hdmi技术; 从lip_数据_质量中选择SUM(采购的项目总数),SUM(缺失的项目总数),其中dt=“$DATE_YEST_FORMAT2”` QUERY2=`hive-e“ 设置mapred.job.queue.name=hdmi技术; 从lip_数据_质量中选择100*SUM(总项目数_遗漏项目数*1.0)/SUM(总项目数_采购),其中dt='$DATE_YEST_FORMAT2';"` echo“购买的物品总数:`echo$QUERY1 | awk'{print$1}`” echo“缺少的项目总数RMISMATCH:`echo$QUERY1 | awk'{print$2}`” echo“错误百分比:$QUERY2”
现在,我想用Python做一些类似的事情。但是Awk仍然有它的用途。感谢Mike的建议,我尝试了这个建议,并且我用我正在运行的脚本和我得到的输出更新了问题,我猜脚本有问题。或者可能是
Awk
?因为我正在运行SunOS
。很少有部分是不正确的很好,但最后三个echo语句工作不正常。有什么建议吗?您做了什么更改?我不确定,与您以前的解决方案有什么不同?可能是您更改的空格内容吗?我只是删除了前两行的空格。我更改了,例如,“QUERY1=”改为“QUERY1”=,这是Bash的正确语法。