यहाँ 'regex' संस्करण (2015, बैश 3.x और नवीन) इग्नेसियो के जवाब की, ऑपरेटर =~
का उपयोग कर:
[[ "1234" =~ ^12 ]] && echo y
आप एक चर से एक गतिशील उपसर्ग की जरूरत है:
var=12
[[ "1234" =~ ^$var ]] && echo y
जब जटिल नियमित अभिव्यक्ति का उपयोग कर आप उन्हें एक स्वयं के चर में जगह कर सकते हैं:
var=12
var2=a
regex="^${var}.+${var2}.+$"
[[ "1234a567" =~ $regex ]] && echo y
आदेश [[
पर भी 'Conditional Constructs' section of the Bash man page देखें:
एक अतिरिक्त द्विआधारी ऑपरेटर, = ~, उपलब्ध, == और के रूप में ही पूर्वता साथ है =। जब इसका उपयोग किया जाता है, ऑपरेटर के दाईं ओर की स्ट्रिंग को एक विस्तारित नियमित अभिव्यक्ति माना जाता है और तदनुसार मिलान किया जाता है (जैसा कि रेगेक्स (3) में होता है)। स्ट्रिंग मान 0 है यदि स्ट्रिंग पैटर्न से मेल खाता है, और 1 अन्यथा। यदि नियमित अभिव्यक्ति वाक्य रचनात्मक रूप से गलत है, तो सशर्त अभिव्यक्ति का वापसी मान 2 है। यदि खोल विकल्प nocasematch सक्षम है, तो मिलान वर्णमाला वर्णों के मामले के बिना किया जाता है। नियमित अभिव्यक्ति के भीतर संश्लेषित उप-अभिव्यक्तियों से मेल खाने वाले सबस्ट्रिंग सरणी चर BASH_REMATCH में सहेजे जाते हैं। इंडेक्स 0 के साथ BASH_REMATCH का तत्व स्ट्रिंग का हिस्सा है जो पूरे नियमित अभिव्यक्ति से मेल खाता है। इंडेक्स एन के साथ BASH_REMATCH का तत्व nth संश्लेषित उप-संपीड़न से मेल खाने वाली स्ट्रिंग का हिस्सा है।
संभावित डुप्लिकेट [बैश में, मैं कैसे जांच सकता हूं कि स्ट्रिंग कुछ मूल्य से शुरू होती है?] (Http://stackoverflow.com/questions/2172352/in-bash-how-can-i-check- अगर-ए-स्ट्रिंग-शुरू-कुछ-मूल्य के साथ) – tripleee