2013-06-05 13 views
40

मैं एक खोल स्क्रिप्ट लिख रहा हूँ में एक निश्चित स्ट्रिंग है, और मैं अगर एक कमांड के उत्पादन में एक निश्चित स्ट्रिंग की जाँच करने की कोशिश कर रहा हूँ। मुझे लगता है कि मुझे शायद grep का उपयोग करना होगा, लेकिन मुझे यकीन नहीं है कि कैसे। क्या कोई जानता है?यह देखना कि आदेश के उत्पादन में एक खोल स्क्रिप्ट

+0

क्या आउटपुट स्ट्रिंग जेनरेट करने के बाद कमांड को चलने की आवश्यकता है, या फिर उस समय तुरंत बंद हो सकता है? (इस संबंध में आपके दो उत्तरों उनके अर्थशास्त्र के संदर्भ में भिन्न हैं)। –

उत्तर

27

टेस्ट ग्रेप की वापसी मूल्य:

./somecommand | grep 'string' &> /dev/null 
if [ $? == 0 ]; then 
    echo "matched" 
fi 
+1

धन्यवाद! वह काम किया। – user1118764

+2

बस ध्यान दें, वहाँ बंद करने वर्ग कोष्ठक और 0. मैं इस संपादित नहीं कर सकते जो अंतरिक्ष की जरूरत है। –

+1

इस कोड को सभी POSIX के गोले के साथ काम नहीं करता है: POSIX मानक केवल आवश्यकता है '=' एक तुलना ऑपरेटर, नहीं '==' हो, http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html –

86

परीक्षण $? एक विरोधी पैटर्न

if ./somecommand | grep -q 'string'; then 
    echo "matched" 
fi 
+0

की पूरी समझ को प्रोत्साहित करने के लिए यह क्यों काम करता है/प्रत्येक पैरामीटर क्या करता है, इसके लिए धन्यवाद। – maxtuzz

+0

अच्छा यहाँ काम! – marcusshep

+0

परफेक्ट धन्यवाद आप इस मुझे क्या करना चाहता था के लिए एक आकर्षण काम किया। – MitchellK

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