2012-08-09 72 views
1

下面是我的shell腳本工作正常。使用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腳本,我得到以下三件事情從上三個回聲陳述 -

Total items purchased 
Total Items MissingorMismatch 
Error Percentage 

我需要將以上三件事通過電子郵件發送到我們的電子郵件組,我們有[email protected]上面使用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" [email protected] 
+2

您錯過了使用'{'和'}'分組回顯語句的部分。 – 2012-08-09 03:31:10

+0

運行第一個查詢兩次只提取不同的輸出字段是什麼? – tripleee 2012-08-09 03:42:44

+0

@tripleee,你是什麼意思?我無法理解。你能舉一些例子說你在說什麼嗎? – ferhan 2012-08-09 04:28:46

回答

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" [email protected] 

也可通過管道現有腳本的輸出到mail(如果你不想修改腳本,或者如果你只是想somtimes發送郵件):

<your script> | mail -s "Test Data" [email protected] 

你可以在命令行上指定多個收件人,所以:

... | mail -s "Test Data" [email protected] [email protected] 

等等。

+0

謝謝你的建議,但它讓我更困惑。你能否爲我提供所有案例的準確代碼,然後我可以理解更多,因爲我是shell腳本的新手。所以我在理解語法和所有其他方面都很困惑。 – ferhan 2012-08-09 01:23:25

+0

我用我試過的腳本更新了這個問題,但是我只收到了電子郵件中的最後一個回聲聲明。 – ferhan 2012-08-09 01:34:49

+0

示例代碼在'|'之前缺少結束'}'字符焦炭。看到我的答案http://stackoverflow.com/users/819916/nevzz03。你們是在同一個項目上工作嗎?還是這個功課? (如果是這樣,你應該這樣標記)。否則,請協調你的問題,而不是多次詢問同一件事。祝你好運。 – shellter 2012-08-09 02:38:26