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

を使用して、これら3つのことを1つのメールで送信するにはどうすればよいですかmail command。したがって、メールを受信するたびに、メール本文は次のようになります。各行に1つのエコーステートメントが必要です。

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 
4

2 に答える 2

21

要件は完全には明確ではありませんが、これを試してください

{
    echo "Total items: `echo $QUERY1 | awk '{print $1}'`"
    echo "Total Error: `echo $QUERY1 | awk '{print $2}'`"
    echo "Percentage: $QUERY2"
} | mail -s "subject" toUser1@xyz.com,toUser2@abc.com

ペアはプロセスグループを作成し、{ .. }すべてのstd-outputは1(パイプ)にリダイレクトされます。1 |(パイプ)はメールプログラムのstd-inに接続します。

あなたは使用する必要があるかもしれません、あなたが理解しているように見えるこのトピックに関するあなたの他の質問から私が見る主題を指定しますmailx-s

またsendmail、このスクリプトを実行するマシンからメールを配信するには、実行中であり、適切に構成されている必要があります。

IHTH


編集:2015-11-07

これについて「いい答え」のスターを獲得したばかりですが、レビューの結果、プロセスの過度の使用についてコメントしなかったことに驚いています。この場合、これはへの1回の呼び出しに減らすことができます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" toUser1@xyz.com,toUser2@abc.com

またはワンライナーの群衆の場合;-)、それは

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" toUser1@xyz.com,toUser2@abc.com

この{ .. }場合、パイプに接続するプロセスは1つしかないため、は必要ありません。

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

最後に、操作にはサンプルデータが含まれていなかったため、コードはわずかにテストされています。

于 2012-08-09T02:27:24.057 に答える
4

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" you@yourdomain.com
于 2012-08-09T03:45:59.947 に答える