vostro requisito non è del tutto chiaro, ma provare questo
{
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]
la coppia { .. }
crea un gruppo processo, e tutti std-output viene reindirizzato al 1 |
(pipe), che si connette allo std-in del tuo programma di posta.
Potrebbe essere necessario utilizzare mailx
, -s
specifica l'oggetto, che vedo dall'altra domanda su questo argomento che sembra capire.
Anche il sendmail
deve essere in esecuzione e configurato correttamente per l'invio di qualsiasi messaggio dalla macchina che si esegue questo script.
IHTH
Edit: 2015-11-07
appena ricevuto una stella 'bella risposta' per questo, e su sulla revisione, sono sorpreso che non ho commentare l'uso eccessivo dei processi. Per questo caso, questo può essere ridotta ad una chiamata awk
, cioè
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]
O per la folla one-liner ;-), che è
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]
Il { .. }
non sono necessari in questo caso, in quanto vi è una sola procedura di connessione alla pipe.
Per un caso come un rapporto di riepilogo inviato una volta al giorno, il codice originale è completamente utilizzabile (ma non ottimale). Tuttavia, la codifica non ottimale porta a cattive abitudini. Chiamare 5 processi quando uno sarà sufficiente in un ciclo che viene eseguito migliaia di volte in un giorno, consumerà risorse di elaborazione inutilmente.
Infine, come l'o.p. non ha incluso alcun dato di esempio, il codice è solo leggermente testato.
Non si può eseguire il pipe in un file tmp e basta inserirlo? –
tutte queste istruzioni echo ci sono nel mio script di shell e da quello script di shell ho solo bisogno di passare queste tre istruzioni di eco in una singola email. – AKIWEB
possibile duplicato di [Invia una e-mail a un gruppo di posta elettronica usando lo script di shell] (http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee