Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用shell脚本发送电子邮件并附加查询的输出_Shell_Unix_Hadoop_Solaris_Hive - Fatal编程技术网

使用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

下面是我运行两个配置单元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_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的正确语法。