2015-04-24 8 views
6

में चर प्रकार जाओ मैं द्वारा वैरिएबल प्रकार प्राप्त कर सकते हैं:अजगर में बैश

>>> i = 123 
>>> type(i) 
<type 'int'> 

मैं this page पर देखा बैश में कोई वैरिएबल प्रकार देखते हैं कि। दी गई स्पष्टीकरण है:

अनियमित चर दोनों आशीर्वाद और शाप दोनों हैं। वे स्क्रिप्टिंग में अधिक लचीलापन की अनुमति देते हैं और कोड की रेखाओं को पीसने में आसान बनाते हैं (और आपको खुद को लटका देने के लिए पर्याप्त रस्सी देते हैं!)। हालांकि, वे स्लॉपी प्रोग्रामिंग आदतों को रेंगने और प्रोत्साहित करने के लिए सूक्ष्म त्रुटियों की अनुमति देते हैं।

लेकिन मुझे यकीन नहीं है कि इसका क्या अर्थ है और वास्तविक फायदे (और कमियां) क्या हैं।

आपके उत्तरों के लिए धन्यवाद! :)

उत्तर

9

बैश में पाइथन जैसे ही प्रकार नहीं हैं (हालांकि मैं कहूंगा कि पायथन के प्रकार के बजाय कक्षाएं हैं)। लेकिन बैश वैरिएबल में गुण हैं जो अधिकतर (0) declare के माध्यम से दिए जाते हैं, लेकिन विशेषताओं की श्रृंखला काफी छोटी है। आप एक विशेषता declare -p का उपयोग कर, उदाहरण के लिए मिल सकता है, declare -i एक पूर्णांक बनाता है:

declare -i num 
num=42 
declare -p num 

देता है:

declare -i num="42" 

लेकिन इस अजगर की तुलना में एक गरीब सुविधा, या लगभग किसी भी आधुनिक भाषा है। समस्या यह है कि बैश जैसे कुछ में मूल प्रकार एक टेक्स्ट स्ट्रिंग है, और यह ठीक है अगर आपको केवल फाइलनाम जैसी चीज़ों के लिए टेक्स्ट स्ट्रिंग्स की आवश्यकता है। लेकिन एक बार जब आप भारी प्रसंस्करण करने की आवश्यकता शुरू करते हैं तो आपको अन्य प्रकार की आवश्यकता होती है। उदाहरण के लिए, बैश फ़्लोटिंग पॉइंट का समर्थन नहीं करता है। आपको यौगिक प्रकारों की भी आवश्यकता है, एक फ़ाइल के रूप में फ़ाइल का वर्णन करने वाली कक्षा का वर्णन करने वाली कक्षा।

बैश 4 में सहयोगी सरणी (declare -A) है, जो पाइथन शब्दकोशों के समान है, जो कार्यक्षमता को काफी बढ़ाता है।

फिर भी, अधिकांश सहमत होंगे कि ऑब्जेक्ट ओरिएंटेशन बैश में काफी असंभव है, हालांकि कुछ तर्क देंगे कि यह कॉर्न शैल में किया जा सकता है (जिसमें अधिक शक्तिशाली विशेषताएं हैं)। http://en.wikipedia.org/wiki/Object-oriented_programming

इसका क्या मतलब है इसके लिए क्या बाश ठीक है - सरल प्रसंस्करण जो काम करने के लिए तेज़ और आसान है। लेकिन एक महत्वपूर्ण द्रव्यमान है जिसके बाहर ऐसी भाषा का उपयोग करना अनावश्यक, त्रुटि प्रवण और धीमा हो जाता है। वह महत्वपूर्ण द्रव्यमान पैमाने में से एक हो सकता है, यानी बड़ी मात्रा में डेटा या जटिलता हो सकती है।

कोई आसान कट ऑफ पॉइंट नहीं है जहां आपको बैश का उपयोग करना बंद कर देना चाहिए और पायथन पर स्विच करना चाहिए। यह सिर्फ इतना है कि प्रोग्राम अधिक जटिल हो जाते हैं और पाइथन का उपयोग करने के मामले में बड़ा हो जाता है।

मुझे जोड़ना चाहिए कि शैल स्क्रिप्ट शायद ही कभी समय के साथ छोटे और कम जटिल हो जाएं!

+1

त्वरित नोट: बैश में ओओपी असंभव नहीं है, बस वास्तव में पागल है। Https://github.com/uudruid74/bashTheObjects पर एक नज़र डालें –

संबंधित मुद्दे