2008-08-19 32 views
5

मैं http://tldp.org/LDP/abs/html/why-shell.html देख रहा था और के घेरे में आ गया था:शैल स्क्रिप्ट पर "कंपनी के भविष्य को शर्त क्यों नहीं देना चाहिए"?

शेल स्क्रिप्ट

उपयोग करने के लिए नहीं है ...

  • मिशन महत्वपूर्ण अनुप्रयोगों जिस पर आप का भविष्य दांव लगा रहे हैं कंपनी

क्यों नहीं?

उत्तर

11

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

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

0

मैं दांव लगाना होगा लेखक दिखाया जा रहा है वे कृपया गुणवत्ता wrt शेल पटकथा लेखन के कुछ पहलुओं के साथ असहज कर रहे हैं। उदाहरण के लिए कौन इकाई इकाई बाश स्क्रिप्ट का परीक्षण करती है।

इसके अलावा स्क्रिप्ट बल्कि भारी अंतर्निहित ऑपरेटिंग सिस्टम है, जो एक नकारात्मक बात के बारे में कुछ हो सकता है के साथ मिलकर कर रहे हैं।

+0

अधिकांश भाषाओं में ज्यादातर भाषाओं ओएस से बंधे हैं। – Xailor

6

मुझे लगता है कि लेख शैल स्क्रिप्ट का उपयोग न करने के कारणों की वास्तव में अच्छी सूची बताता है - एक मिशन के साथ महत्वपूर्ण बुलेट आप सभी अन्य गोलियों के आधार पर निष्कर्ष निकालने के बारे में बताते हैं।

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

3

स्क्रिप्ट कुछ भी नहीं और अधिक या कंप्यूटर प्रोग्राम की तुलना में कम कर रहे हैं। कुछ तर्क देंगे कि स्क्रिप्ट कम परिष्कृत हैं। ये वही लोग आमतौर पर स्वीकार करेंगे कि आप स्क्रिप्टिंग भाषाओं में परिष्कृत कोड लिख सकते हैं, लेकिन ये स्क्रिप्ट वास्तव में स्क्रिप्ट नहीं हैं, लेकिन परिभाषा के अनुसार पूर्ण कार्यक्रम हैं।

जो भी हो।

सही जवाब, मेरी राय में, कि "यह निर्भर करता है"। वैसे, वैसे, यह संकल्पनात्मक प्रश्न का एक ही जवाब है कि क्या आपको मिशन महत्वपूर्ण अनुप्रयोगों के लिए संकलित निष्पादन योग्य में अपना विश्वास रखना चाहिए।

अच्छा कोड अच्छा है, और खराब कोड खराब है - चाहे वह बैश स्क्रिप्ट, एक विंडोज सीएमडी फ़ाइल, पायथन, रूबी, पर्ल, बेसिक, फर्थ, एडा, पास्कल, कॉमन लिस्प, कोबोल, या संकलित सी

यह नहीं कहने के लिए कि भाषा की पसंद कोई फर्क नहीं पड़ता। कभी-कभी, किसी विशेष भाषा को चुनने या बनाम व्याख्या (प्रदर्शन, मापनीयता, क्षमता, सुरक्षा इत्यादि) बनाने के लिए बहुत अच्छे कारण हैं। लेकिन, सभी चीजें बराबर होती हैं, मैं सप्ताह के किसी भी दिन एक डूफस द्वारा लिखे गए समकक्ष सी ++ कार्यक्रम पर एक महान प्रोग्रामर द्वारा लिखित एक शेल स्क्रिप्ट पर भरोसा करता हूं।

4

जाहिर है, यह एक भूसे आदमी का एक सा मुझे नीचे दस्तक करने के लिए है। मुझे वास्तव में दिलचस्पी है कि क्यों लोग मानते हैं कि शैल स्क्रिप्ट को "मिशन-महत्वपूर्ण अनुप्रयोगों" से बचा जाना चाहिए, लेकिन मैं एक अनिवार्य कारण के बारे में नहीं सोच सकता।

उदाहरण के लिए, मैंने कुछ ksh स्क्रिप्ट्स (और लिखित) को देखा है जो एसक्यूएल * प्लस का उपयोग करते हुए ओरेकल डेटाबेस से बातचीत करते हैं। अफसोस की बात है, सिस्टम ठीक से स्केल नहीं कर सका क्योंकि प्रश्नों ने बाध्य चर का उपयोग नहीं किया था। खोल स्क्रिप्ट के खिलाफ एक हड़ताल, है ना? गलत। यह मुद्दा शैल स्क्रिप्ट के साथ नहीं था लेकिन एसक्यूएल * प्लस के साथ था। असल में, प्रदर्शन समस्या तब चली गई जब मैंने एसक्यूएल * प्लस को एक पर्ल स्क्रिप्ट के साथ बदल दिया जो डेटाबेस से जुड़ा हुआ था और बाध्य चर का उपयोग करता था।

मैं आसानी से अंतरिक्ष यान उड़ान सॉफ्टवेयर में खोल स्क्रिप्ट डालने की कल्पना कर सकता हूं एक बुरा विचार होगा। लेकिन जावा या सी ++ एक समान रूप से खराब विकल्प हो सकते हैं। सबसे अच्छा विकल्प आमतौर पर उस उद्देश्य के लिए उपयोग की जाने वाली भाषा (असेंबली?) होगी।

तथ्य यह है कि, यदि आप यूनिक्स के किसी भी स्वाद का उपयोग करते हैं, तो आप मिशन-महत्वपूर्ण परिस्थितियों में खोल स्क्रिप्ट का उपयोग कर रहे हैं, मानते हैं कि आपको लगता है कि बूटिंग अप महत्वपूर्ण है। जब किसी स्क्रिप्ट को कुछ ऐसा करने की आवश्यकता होती है जो खोल विशेष रूप से अच्छा नहीं होता है, तो आप उस हिस्से को उप-प्रोग्राम में डाल देते हैं। आप स्क्रिप्ट थोक फेंक नहीं देते हैं।

2

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

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

-2

स्क्रिप्ट कुछ मिशन-महत्वपूर्ण कार्यों को लागू करने के लिए अनुचित हैं, क्योंकि उनके पास कार्य करने के लिए + r और + x अनुमतियां होनी चाहिए। निष्पादन योग्यों के पास केवल + x होना चाहिए।

तथ्य यह है कि एक स्क्रिप्ट में + आर का अर्थ है कि उपयोगकर्ता स्क्रिप्ट की प्रतिलिपि बना सकते हैं, इसे संपादित/घटा सकते हैं, और उनके संपादित कूकू-अंडे संस्करण को निष्पादित कर सकते हैं।

+0

तो क्या होगा अगर वे एक प्रतिलिपि खोल स्क्रिप्ट निष्पादित कर सकते हैं? यदि उपयोगकर्ता फ़ाइल बना सकता है और इसे निष्पादित कर सकता है, तो इससे कोई फ़र्क नहीं पड़ता कि उपयोगकर्ता ने फ़ाइल की प्रतिलिपि बनाई है या इसे स्क्रैच से लिखा है: निष्पादित फ़ाइल में वही क्षमताएं हैं। –

2

जब मैं इस उद्धरण को पढ़ता हूं तो मैं "मिशन महत्वपूर्ण" भाग के बजाय "अनुप्रयोग" भाग पर ध्यान केंद्रित करता हूं।

मैंने इसे यह कहते हुए पढ़ा है कि बैश उन अनुप्रयोगों को लिखने के लिए नहीं है, जो स्क्रिप्टिंग के लिए हैं। तो निश्चित रूप से, आपके एप्लिकेशन में कुछ हाउसकीपिंग स्क्रिप्ट हो सकती हैं लेकिन critical-business-logic.sh लिखना न करें क्योंकि ऐसी भाषा के लिए शायद दूसरी भाषा बेहतर है।

0

कोई फर्क नहीं पड़ता कि हम सभी ओएस के साथ बातचीत करने के लिए एक व्यवहार्य उपकरण है। यह ओएस के साथ एक मानव पठनीय बातचीत है जिसका हम उपयोग करते हैं, यह शिकंजा के साथ एक पेंच चालक का उपयोग करने की तरह है। कमांडलाइन हमेशा एक एटूल होगी जिसे हमें या तो व्यवस्थापक, प्रोग्रामर या नेटवर्क की आवश्यकता होती है। खिड़की को देखो वे भी अपने शक्तियों पर विस्तारित।