एक वर्ग ब्रैकेट $ […] का मतलब क्या है?


34

ऐसा प्रतीत होता है कि $[expr]जैसे अंकगणितीय विस्तार करता है $((expr))। लेकिन मैं $[बैश मैनुअल में कोई उल्लेख नहीं कर सकता । यह आदेश कोई परिणाम नहीं देता है:

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['

यह ऑपरेटर क्या है और इसका व्यवहार कहीं भी मानकीकृत है?

मेरा बैश संस्करण: GNU बैश, संस्करण 3.2.51 (1) -release (x86_64-Apple-dwin13)


3
किसी मानक के बारे में स्पष्ट रूप से आपके प्रश्न का उत्तर देने के लिए : (अप्रचलित) bashविशिष्ट $[...]वाक्यविन्यास गैर-मानक है। $((...))(कि वजह से उपजी है ksh) POSIX मानक है।
Janis

2
Ubuntu 11.04 के साथ man bash | grep -E '\$\[':। आउटपुट: पुराना प्रारूप $ [अभिव्यक्ति] पदावनत किया गया है और आगामी संस्करणों में हटा दिया जाएगा
साइरस

मैन पेजों में _t_h_i_s (जो तब मैन यूटिलिटी द्वारा व्याख्या की जाती है ताकि अलग-अलग दिखाई दे) जैसी चीजें हो सकती हैं, ताकि आपका जीआरपी विफल हो जाए अगर ऐसा होता है तो आपके द्वारा खोजी गई चीज इस तरह नोट की जानी चाहिए
ओलिवियर जुलाक

जवाबों:


19

आप यहां पुराने बैश स्रोत पा सकते हैं । विशेष रूप से मैंने bash-1.14.7.tar.gz डाउनलोड किया । में documentation/bash.txtआप पाएंगे:

अंकगणित विस्तार

अंकगणितीय विस्तार एक अंकगणितीय अभिव्यक्ति के मूल्यांकन और परिणाम के प्रतिस्थापन की अनुमति देता है। अंकगणितीय विस्तार के लिए दो प्रारूप हैं:

     $[expression]

     $((expression))

संदर्भ bash-doc-2.0.tar.gz डाउनलोड से $[चले गए हैं और फ़ाइल में उल्लेख किया गया है कि:doc/bash.htmlNEWS

$[...]अंकगणित विस्तार वाक्य रचना अब समर्थित नहीं है, के पक्ष में $((...))

$((...))एक अंकगणितीय विस्तार के लिए मानक वाक्यविन्यास भी है , लेकिन मूल बैश कार्यान्वयन की तुलना में बाद में मानक में जोड़ा जा सकता है।

हालाँकि, $[...]यह अभी भी बैश 5.0 में काम करता है, इसलिए इसे पूरी तरह से हटाया नहीं गया है।


27

जीएनयू बैश मेलिंग सूची पर एक थ्रेड में , यह कहता है कि $[सिंटैक्स एक प्रारंभिक सिंटैक्स था $((, जिसके पक्ष में वंचित किया गया था , क्योंकि बाद वाले कोर्न शेल द्वारा पहले से ही उपयोग किया गया था।

इस साइट के अनुसार , बैश 3.2.48 के मैनुअल में $[सिंटैक्स का संदर्भ था । इसलिए संभवतः इस संदर्भ को 3.2.51 में हटा दिया गया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.