要件は完全には明確ではありませんが、これを試してください
{
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つのプロセスを呼び出すと、コンピューティングリソースが不必要に消費されます。
最後に、操作にはサンプルデータが含まれていなかったため、コードはわずかにテストされています。