2013-08-09 3 views
25

मैं एक grep regex में एक चर का उपयोग करने की कोशिश कर रहा हूं। मैं सिर्फ विफलता का एक उदाहरण पोस्ट करूंगा और शायद कोई सुझाव दे सकता है कि grep कमांड चलाने के दौरान चर का मूल्यांकन कैसे किया जाए। मैंने ${var} भी कोशिश की है।शैल वैरिएबल में एक grep regex

$ string="test this" 
$ var="test" 
$ echo $string | grep '^$var' 
$ 

चूंकि मेरा रेगेक्स "परीक्षण" से शुरू होने वाली रेखाओं से मेल खाना चाहिए, इसलिए इसे इसके माध्यम से प्रतिबिंबित रेखा मुद्रित करनी चाहिए।

$ echo $string 
test this 
$ 
+3

ठीक है, मुझे लगता है कि मैं पता लगा यह दोहरे उद्धरण चिह्नों के साथ काम करता है। –

+1

सही, डबल उद्धरण। बस याद रखें कि डबल कोट्स के भीतर आपको बैकस्लाश और ईओएल '$' से बचना होगा। – Kevin

+0

संभावित डुप्लिकेट [बैश स्क्रिप्ट में grep कमांड जोड़ें] (http://stackoverflow.com/questions/5142729/add-grep-command-to-bash-script) – tripleee

उत्तर

33

आपको डबल कोट्स का उपयोग करने की आवश्यकता है। सिंगल कोट्स शैल वैरिएबल को खोल द्वारा इंटरपोलेट करने से रोकते हैं। शैल को इंटरपोलेशन करने से रोकने के लिए एकल कोट्स का उपयोग करें, यदि आपको पैटर्न के हिस्से के रूप में $ का उपयोग किया जाता है तो आपको ऐसा करना पड़ सकता है। यदि आप डबल कोट्स का उपयोग कर रहे हैं तो आप उद्धरण$ पर बैकस्लैश का भी उपयोग कर सकते हैं।

इसके अलावा, आपको अपने चर को घुमावदार ब्रेसिज़ ${var} में रखने की आवश्यकता हो सकती है ताकि इसे शेष पैटर्न से अलग किया जा सके।

उदाहरण:

$ string="test this" 
$ var="test" 
$ echo $string | grep "^$var" 
+0

उदाहरण कोड में घुंघराले ब्रेसिज़ कहां हैं? – moejoe

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