क्या POSIX में सरणियों को शामिल करने से POSIX मानक टूट जाएगा?
बैश और ksh93 में सरणियों का उपयोग करने की क्षमता बहुत सुविधाजनक है जब आवश्यकता कई सरणियों से तत्वों को जल्दी से एक्सेस करने के लिए उठती है। यहाँ एक त्वरित उदाहरण है:
#!/bin/ksh93 --
array1=(1 2 3 4 5 6 7)
array2=(8 9 10 11 12 13 14)
printf '%s\n' "Third element of array1 is ${array1[2]} and fifth element of array2 is ${array2[4]}"
मुझे याद है कि पासिंग में पोज़िक्स मानक में एरे को शामिल नहीं किए जाने का कारण यह है कि ऐसा करने से चीजें टूट जाएंगी। क्या ये सच है? क्या चीजें टूटेंगी?
जवाब
मुझे नहीं पता कि आप किस पाठ का जिक्र कर रहे हैं, लेकिन मुझे पूरा यकीन है कि यह मामला नहीं है, क्योंकि bash
और ksh93
पोसिक्स के अनुरूप माना जाता है, और यदि सरणियों ने POSIX गोले को तोड़ने का कारण बनाया, तो वे गोले अनुपालन नहीं करेंगे ।
हालाँकि, इसका मतलब यह नहीं है कि POSIX उन्हें शामिल करने की संभावना है। सबसे पहले, bash
और ksh93
उसी तरह सरणियों को लागू नहीं कर सकते हैं, और POSIX एक ऐसी सुविधा को निर्दिष्ट नहीं करना चाहेगा जो व्यापक रूप से तैनात ऐतिहासिक कार्यान्वयन में अलग तरह से व्यवहार करता है।
दूसरा, POSIX आमतौर पर बहुत सारी विशेषताओं को निर्दिष्ट नहीं करता है। केवल अब भी आवश्यकता का प्रस्ताव है local
, जिसे छोड़कर लगभग हर खुले स्रोत POSIX शेल में व्यापक रूप से तैनात किया गया है ksh93
। इसी तरह, एक vi
कार्यान्वयन का उपयोग करना संभव होगा जो केवल POSIX सुविधाओं को लागू करता है, लेकिन अधिकांश उपयोगकर्ता इसे सुविधाओं पर काफी विरल पाएंगे।
अंत में, POSIX उन चीजों को मानकीकृत करना पसंद करता है जो पहले से ही अधिकांश कार्यान्वयन में उपलब्ध हैं, और शेल सरणियां ऐसी कोई चीज नहीं हैं। dash
उनके पास कमी है, जैसा कि अधिकांश गोले करते हैं, जिसके साथ यह वंश को साझा करता है, साथ ही छोटे कार्यान्वयन जैसे कि busybox
। एक पूर्ण POSIX वातावरण अपेक्षाकृत छोटा हो सकता है, और यह उन लोगों के लिए बहुत सुविधाजनक है जिन्हें एम्बेडेड सिस्टम के साथ काम करने की आवश्यकता होती है, इसलिए अच्छा-से-हव को अक्सर सादगी के पक्ष में छोड़ दिया जाता है।
ध्यान दें कि सिर्फ इसलिए कि व्यापक रूप से खुले स्रोत कार्यान्वयन के लिए एक सुविधा है इसका मतलब यह नहीं है कि वाणिज्यिक यूनिक्स वातावरण होगा। यहां तक कि अगर POSIX को एक नए संस्करण में सरणियों को निर्दिष्ट करना था, तो उन सभी प्रणालियों को समर्थन देने के लिए अद्यतन किए जाने से कई साल पहले होगा।