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

mail commandを使用してこれらの3つのメールを1つのメールでどのように送信できますか?だから、メール本文には、私は、あなたの要件を完全に明確ではないSunOS3つのエコー文の出力をメールにパイプする

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

tmpファイルにパイプしてパイプすることはできませんか? –

+0

これらのecho文はすべて私のシェルスクリプトにあり、そのシェルスクリプトからは、これらの3つのecho文を1つの電子メールに渡す必要があります。 – AKIWEB

+0

[シェルスクリプトを使用して電子メールグループに電子メールを送信]の可能な複製(http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee

答えて

15

を実行している私はすべての電子メールを取得するたびに、各行に1エコー、文

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

があるはずです以下のようにする必要がありますしかし{ .. }ペアは、プロセスグループを作成し、すべてのSTD-出力が1 |にリダイレクトされ、この

{ 
    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-inに接続します。

mailx,-sには件名を指定する必要があります。これは、このトピックの他の質問からわかるとおりです。

sendmailまた、このスクリプトを実行するマシンから配信されるメールが正しく設定されている必要があります。

IHTH


編集:

2015年11月7日は、ちょうどこのために「素敵な答え」星を得た、と上のレビューに、私は私がしなかったことを驚いていますプロセスの過度の使用についてのコメント。このような場合のために、これはそれが

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] 

{ .. }が、この中で必要とされていないで、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] 

または1ライナー群集のため;-)に減少させることができますケースには、パイプに接続するプロセスが1つしかないためです。

要約レポートが1日に1回送信されるようなケースでは、元のコードは完全に使用可能ですが、最適ではありません。しかし、非最適なコーディングは悪い習慣につながります。 1日に1000回実行されるループで十分な場合に5つのプロセスを呼び出すと、不必要に計算リソースが消費されます。

最後に、o.p.サンプルデータは含まれていませんでしたが、コードは軽度にテストされています。

1

bashで関数を作成するだけです。それをsendmailに送信します。

  #!/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

関連する問題