परीक्षण का एक और अधिक आधुनिक संस्करण
के हाल के संस्करण खूब जोर से पीटना एक कंपाउंड कमांड शामिल करें जो एक उन्नत प्रतिस्थापन के रूप में कार्य करता है परीक्षण. यह निम्नलिखित सिंटैक्स का उपयोग करता है:
[[ अभिव्यक्ति ]]
कहाँ, जैसे परीक्षण, अभिव्यक्ति एक अभिव्यक्ति है जो सही या गलत परिणाम का मूल्यांकन करती है। [[]] कमांड बहुत समान है परीक्षण (यह इसके सभी भावों का समर्थन करता है), लेकिन
एक महत्वपूर्ण नई स्ट्रिंग अभिव्यक्ति जोड़ता है:
string1 =~ regex
जो सत्य लौटाता है यदि string1 विस्तारित नियमित अभिव्यक्ति से मेल खाता है regex. यह डेटा सत्यापन जैसे कार्यों को करने के लिए बहुत सारी संभावनाएं खोलता है। पूर्णांक अभिव्यक्तियों के हमारे पिछले उदाहरण में, यदि स्थिरांक होता तो स्क्रिप्ट विफल हो जाती INT पूर्णांक को छोड़कर कुछ भी शामिल है। स्क्रिप्ट को यह सत्यापित करने के लिए एक तरीके की आवश्यकता है कि स्थिरांक में एक पूर्णांक है। का उपयोग करते हुए [[]] साथ =~ स्ट्रिंग एक्सप्रेशन ऑपरेटर, हम स्क्रिप्ट को इस प्रकार सुधार सकते हैं:
#! / Bin / bash
# परीक्षण-पूर्णांक2: पूर्णांक के मान का मूल्यांकन करें।
आईएनटी=-5
यदि [[ "$INT" =~ ^-?[0-9]+$ ]]; तब
यदि [ $INT -eq 0 ]; फिर प्रतिध्वनि करें "INT शून्य है।"
अन्य
अगर [ $INT -lt 0 ]; फिर प्रतिध्वनि करें "INT नकारात्मक है।"
अन्य
प्रतिध्वनि "INT सकारात्मक है।"
fi
यदि [$((INT % 2)) -eq 0 ]; फिर प्रतिध्वनि करें "INT सम है।"
अन्य
प्रतिध्वनि "INT अजीब है।"
fi
fi
अन्य
प्रतिध्वनि "INT एक पूर्णांक नहीं है।" >&2 निकास 1
fi
#! / Bin / bash
# परीक्षण-पूर्णांक2: पूर्णांक के मान का मूल्यांकन करें।
आईएनटी=-5
यदि [[ "$INT" =~ ^-?[0-9]+$ ]]; तब
यदि [ $INT -eq 0 ]; फिर प्रतिध्वनि करें "INT शून्य है।"
अन्य
अगर [ $INT -lt 0 ]; फिर प्रतिध्वनि करें "INT नकारात्मक है।"
अन्य
प्रतिध्वनि "INT सकारात्मक है।"
fi
यदि [$((INT % 2)) -eq 0 ]; फिर प्रतिध्वनि करें "INT सम है।"
अन्य
प्रतिध्वनि "INT अजीब है।"
fi
fi
अन्य
प्रतिध्वनि "INT एक पूर्णांक नहीं है।" >&2 निकास 1
fi
रेगुलर एक्सप्रेशन लागू करके, हम के मान को सीमित करने में सक्षम हैं INT केवल उन स्ट्रिंग्स के लिए जो वैकल्पिक ऋण चिह्न से शुरू होती हैं, जिसके बाद एक या अधिक अंक होते हैं। यह अभिव्यक्ति खाली मूल्यों की संभावना को भी समाप्त कर देती है।
की एक और विशेषता जोड़ी गई [[]] स्था कुए Le == ऑपरेटर पथनाम विस्तार की तरह ही मिलान पैटर्न का समर्थन करता है। उदाहरण के लिए:
[मुझे@लिनक्सबॉक्स ~]$ फ़ाइल=foo.bar
[मुझे@लिनक्सबॉक्स ~]$ फ़ाइल=foo.bar
परीक्षण का एक और अधिक आधुनिक संस्करण
[मुझे@लिनक्सबॉक्स ~]$ यदि [[ $FILE == foo.* ]]; तब
> प्रतिध्वनि "$FILE पैटर्न 'foo.*' से मेल खाता है"
> fi
foo.bar पैटर्न 'foo.*' से मेल खाता है
[मुझे@लिनक्सबॉक्स ~]$ यदि [[ $FILE == foo.* ]]; तब
> प्रतिध्वनि "$FILE पैटर्न 'foo.*' से मेल खाता है"
> fi
foo.bar पैटर्न 'foo.*' से मेल खाता है
इस बनाता है [[]] फ़ाइल और पथनाम के मूल्यांकन के लिए उपयोगी।