व्यवहार में अंतर
बैश 4.3.11 पर कुछ अंतर:
सिफ़ारिश : हमेशा उपयोग []।
[[ ]]मेरे द्वारा देखे गए प्रत्येक निर्माण के लिए POSIX समकक्ष हैं ।
यदि आप का उपयोग करें [[ ]]:
- पोर्टेबिलिटी खो देते हैं
- पाठक को दूसरे बैश एक्सटेंशन की पेचीदगियों को सीखने के लिए मजबूर करें।
[एक अजीब नाम के साथ सिर्फ एक नियमित आदेश है, कोई विशेष शब्दार्थ शामिल नहीं है।
¹ [[...]]कोर्न शेल में समतुल्य निर्माण से प्रेरित
² लेकिन के कुछ मूल्यों के लिए विफल रहता है aया b(जैसे +या index) और संख्यात्मक तुलना करता है, तो करता है aऔर bदशमलव की तरह लग रहे पूर्णांकों। expr "x$a" '<' "x$b"दोनों के आसपास काम करता है।
³ और यह भी के कुछ मूल्यों के लिए विफल रहता है aया bकी तरह !या (।
⁴ 3.2 और उसके बाद के संस्करण में और bash 3.1 के लिए अनुकूलता प्रदान की गई (सक्षम नहीं है BASH_COMPAT=3.1)
⁵ हालांकि समूहीकरण (यहाँ के साथ {...;}आदेश समूह के बजाय (...)जो एक अनावश्यक subshell चल पाएंगे) नहीं के रूप में आवश्यक है ||और &&खोल ऑपरेटरों (के रूप में करने का विरोध किया ||और && [[...]]ऑपरेटर या -o/ -a [ऑपरेटरों) बराबर पूर्वता है। तो [ a = a ] || [ a = b ] && [ a = b ]समकक्ष होगा।
[[साथ कोड अच्छा और स्पष्ट है, लेकिन उस दिन को याद रखें जब आप सिस्टम पर अपने स्क्रिप्टवर्क को डिफ़ॉल्ट शेल के साथ पोर्ट करेंगे जो कि नहीं है ,bashयाkshआदि[बदसूरत, बोझिल है, लेकिनAK-47किसी भी स्थिति में काम करता है।