कुछ सच में सरल और अनुभवहीन:
echo "$PATH"|grep -q whatever && echo "found it"
कहाँ जो कुछ भी है कि आप क्या खोज रहे हैं। &&
के बजाय आप $?
को एक चर में डाल सकते हैं या उचित if
कथन का उपयोग कर सकते हैं।
प्रतिबंधों में शामिल हैं:
- ऊपर इस तथ्य के बावजूद बड़े रास्तों में से सबस्ट्रिंग ("बिन" पर मिलान कोशिश करते हैं और यह शायद यह मिलेगा मिलान करता है, कि "बिन" अपने रास्ते में नहीं है,/बिन और/usr/bin कर रहे हैं)
- ऊपर स्वचालित रूप से की तरह शॉर्टकट का विस्तार नहीं होगा ~
या एक पर्ल एक लाइनर का उपयोग कर:
perl -e 'exit(!(grep(m{^/usr/bin$},split(":", $ENV{PATH}))) > 0)' && echo "found it"
अभी भी यह सीमा है कि यह किसी भी शैल विस्तार नहीं करेगा, लेकिन यदि कोई सबस्ट्रिंग मेल खाता है तो यह असफल नहीं होता है। (उपरोक्त मैचों "/usr/bin
", अगर यह स्पष्ट नहीं था)।
स्रोत
2009-09-08 20:14:09
जेसनवॉफ के उत्तर में लाइन और कॉलन की शुरुआत/समाप्ति से मेल खाने से आपकी सबस्ट्रिंग मैच सीमा का ख्याल रखा जाता है। Tilde विस्तार एक आम मुद्दा नहीं है, क्योंकि ज्यादातर लोग इसे असाइन किए जाने पर विस्तारित करने की अनुमति देते हैं (उदा। 'PATH = "~/bin: $ पथ" ') यदि आवश्यक हो तो प्रतिस्थापन के साथ देखभाल की जा सकती है। – Cascabel
अच्छा, किसी ने 3.5 साल बाद इसे घटा दिया। और एक टिप्पणी नहीं छोड़ी। लंगड़ा। –
मैं gons समाधान को colons के साथ पैटर्न लपेटने का उपयोग कर रहा हूँ। – elias