2012-08-09 53 views
7
echo "Total items: `echo $QUERY1 | awk '{print $1}'`" 
echo "Total Error: `echo $QUERY1 | awk '{print $2}'`" 
echo "Percentage: $QUERY2" 

如何使用mail command在一封電子郵件中發送這三件東西。因此,郵件正文應該是這樣的下面,每當​​我得到任何電子郵件,每行應該有一個回波陳述書將輸出從三個回聲陳述輸出到郵箱

Total items:- Some Number 
Total Error:- Some Number 
Percentage:- Some Number 

我正在SunOS

bash-3.00$ uname -a 
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc 
+0

你不能管它到一個tmp文件,只是管嗎? – 2012-08-09 01:55:59

+0

所有這些echo語句都在我的shell腳本中,並且來自該shell腳本,我只需要在一封電子郵件中傳遞這三個echo語句。 – AKIWEB 2012-08-09 01:57:18

+0

[使用shell腳本向電子郵件組發送電子郵件]的可能副本(http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee 2012-08-09 03:40:33

回答

15

您的需求並不完全清楚,但嘗試這個

{ 
    echo "Total items: `echo $QUERY1 | awk '{print $1}'`" 
    echo "Total Error: `echo $QUERY1 | awk '{print $2}'`" 
    echo "Percentage: $QUERY2" 
} | mail -s "subject" [email protected],[email protected] 

{ .. }對創建一個進程組,並且所有STD-輸出重定向到1 | (管道),它連接到你的郵件程序的標準輸入。

您可能需要使用mailx-s指定主題,我從您對此主題的其他問題中看到您似乎瞭解。

另外sendmail將需要運行並正確配置爲從您執行此腳本的機器發送的任何郵件。

IHTH


編輯:2015年11月7日

就得到了這樣的「好回答」明星,以及關於審查,我很驚訝,我沒有評論過度使用流程。對於這種情況,這可以減少到一個呼叫awk,即

awk -v q1="$QUERY1" -v q2="$QUERY2" \ 
'END { 
    split(q1,q1arr) 
    print "Total items: " q1arr[1] \ 
      "Total Error: " q1arr[2] \ 
      "Percentage: " q2 
}' /dev/null \ 
| mail -s "subject" [email protected],[email protected] 

或爲一個班輪人羣;-),這是

awk -v q1="$QUERY1" -v q2="$QUERY2" 'END {split(q1,q1arr);print "Total items: " q1arr[1] "\nTotal Error: " q1arr[2] "\nPercentage: " q2 }' /dev/null | mail -s "subject" [email protected],[email protected] 

將在此不需要{ .. }情況,因爲只有一個過程連接到管道。

對於每天發送一次總結報告的情況,原始代碼是完全可用的(但非最佳)。但是,編碼非最優導致不良習慣。當一個人能夠在一天內運行1000次的循環中調用5個進程時,會不必要地消耗計算資源。

最後,作爲o.p.沒有包含任何樣本數據,只是對代碼進行了輕微測試。

1

只需在bash中創建一個函數並| (管道)它發送郵件。

  #!/bin/bash 

      echo_statement(){ 

      echo "Total items: `echo $QUERY1 | awk '{print $1}'`" 
      echo "Total Error: `echo $QUERY1 | awk '{print $2}'`" 
      echo "Percentage: $QUERY2" 

      } 
      echo_statement | mail -s "subject" [email protected] 
+0

那也可以。祝你們好運。 – shellter 2014-02-12 03:00:29