を実行している私はすべての電子メールを取得するたびに、各行に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.サンプルデータは含まれていませんでしたが、コードは軽度にテストされています。
tmpファイルにパイプしてパイプすることはできませんか? –
これらのecho文はすべて私のシェルスクリプトにあり、そのシェルスクリプトからは、これらの3つのecho文を1つの電子メールに渡す必要があります。 – AKIWEB
[シェルスクリプトを使用して電子メールグループに電子メールを送信]の可能な複製(http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee