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

mail command을 사용하여 하나의 이메일로 어떻게 세 가지를 보낼 수 있습니까? 내가 이메일을받을 때마다, 각 라인이 있어야 이하 그래서 메일 본문은 다음과 같이해야 하나 에코 명령문 -세 문장의 결과를 메일로 파이프

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 
+0

tmp 파일을 파이프 처리 할 수 ​​없습니까? –

+0

이러한 모든 echo 문은 내 셸 스크립트에 있으며이 셸 스크립트에서만이 세 개의 echo 문을 단일 전자 메일에 전달해야합니다. – AKIWEB

+0

가능한 [셸 스크립트를 사용하여 이메일 그룹에 이메일 보내기] (http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee

답변

15

귀하의 요구 사항이 완전히 명확하지 않다 실행하고, 그러나 { .. } 쌍 프로세스 그룹을 생성하고, 모든 출력은 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] 

시도 (파이프), 귀하의 메일 프로그램의 표준 입력에 연결합니다.

mailx, -s에 주제를 지정해야 할 수도 있습니다.이 주제에 대한 귀하의 이해를 돕는 다른 질문에서 볼 수 있습니다.

sendmail 또한 실행해야하며이 스크립트를 실행하는 시스템에서 모든 메일을 전달할 수 있도록 구성해야합니다.

IHTH


편집 :

2015년 11월 7일 그냥 이것에 대한 '좋은 대답은'별을 얻고,에 대한 검토, 내가하지 않았다 놀랐어요 프로세스의 과도한 사용에 대해 언급하십시오. 이 경우, 이것은, 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] 

를 즉, 아니면 한 줄 군중 ;-)을 위해, 그

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] 

{ .. }이 필요하지 않는 것입니다 수 있습니다 파이프에 연결하는 프로세스가 하나뿐이므로

요약 보고서가 하루에 한 번 전송되는 경우 원래 코드는 완전히 사용할 수 있지만 (최적이 아님). 그러나 코딩을 잘못하면 나쁜 습관이 생깁니다. 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

관련 문제