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

mail command का उपयोग करके मैं इन तीन चीजों को एक ही ईमेल में कैसे भेज सकता हूं। तो मेल शरीर इस तरह नीचे जब भी मैं किसी भी ईमेल मिलता है, प्रत्येक पंक्ति में होना चाहिए होना चाहिए एक गूंज स्टेटमेंटमेल को 0 इको स्टेटमेंट से मेल करने के लिए

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

क्या आप इसे एक टीएमपी फ़ाइल में पाइप नहीं कर सकते हैं और बस पाइप कर सकते हैं? –

+0

ये सभी इको कथन मेरी शेल स्क्रिप्ट में हैं और उस शेल स्क्रिप्ट से केवल मुझे एक ही ईमेल में इन तीन गूंज विवरणों को पारित करने की आवश्यकता है। – AKIWEB

+0

संभावित डुप्लिकेट [खोल स्क्रिप्ट का उपयोग कर ईमेल समूह को ईमेल भेजें] (http://stackoverflow.com/questions/11875036/send-an-email-to-a-email-group-using-shell-script) – tripleee

उत्तर

15

आपका आवश्यकता पूरी तरह से स्पष्ट नहीं है, लेकिन इस

{ 
    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] 

{ .. } जोड़ी एक प्रक्रिया समूह बनाता है, और सभी एसटीडी-आउटपुट 1 | में रीडायरेक्ट हो गई है की कोशिश (पाइप), जो आपके मेल प्रोग्राम के std-in से जुड़ता है।

आपको mailx, -s का उपयोग करने की आवश्यकता हो सकती है विषय, जो मैं इस विषय पर आपके अन्य प्रश्न से देखता हूं जिसे आप समझते हैं।

sendmail को इस स्क्रिप्ट को निष्पादित करने वाली मशीन से किसी भी मेल को वितरित करने के लिए चलने और ठीक से कॉन्फ़िगर करने की आवश्यकता होगी।

IHTH


संपादित करें: 2015-11-07

बस इस के लिए एक 'अच्छा जवाब' स्टार हो गया, और पर समीक्षा पर, मुझे आश्चर्य है कि मैंने नहीं किया हूँ प्रक्रियाओं के अत्यधिक उपयोग पर टिप्पणी। इस मामले के लिए, यह 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] 

{ .. } इस में आवश्यकता नहीं होती है मामला, क्योंकि पाइप से कनेक्ट होने वाली केवल एक प्रक्रिया है।

किसी दिन एक बार सारांश रिपोर्ट की तरह एक मामले के लिए, मूल कोड पूरी तरह से उपयोग योग्य (लेकिन गैर-इष्टतम) है। हालांकि, कोडिंग गैर-अनुकूल रूप से बुरी आदतों की ओर ले जाती है। 5 प्रक्रियाओं को कॉल करना जब कोई लूप में पर्याप्त होगा जो दिन में कई बार चलता है, तो अनावश्यक रूप से गणना संसाधनों का उपभोग करेगा।

अंत में, ओपी के रूप में। किसी भी नमूना डेटा शामिल नहीं किया गया है, कोड केवल हल्के से परीक्षण किया गया है।

1

बस बैश में एक फ़ंक्शन बनाएं और | (पाइप) यह भेजने के लिए मेल।

  #!/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

संबंधित मुद्दे