मैं कुछ चर के साथ एक शेल स्क्रिप्ट लिख रहा हूं जिसे उपयोगकर्ता द्वारा कॉन्फ़िगर किया जाना चाहिए। स्क्रिप्ट को डाउनलोड करने और कॉन्फ़िगर करने के लिए एक इंस्टॉलर होगा, संभवतः प्रश्न की एक श्रृंखला पूछकर। विचाराधीन स्क्रिप्ट अन्य डेवलपर्स के उद्देश्य से है।
इसे कई तरीकों से लागू किया जा सकता है:
स्वयं स्क्रिप्ट में प्लेसहोल्डर का उपयोग करें और
sed
स्थापना के दौरान उन्हें बदलने के लिए उपयोग करें (कुछ इस तरह: /programming/415677/how-to-replace-placeholders-in-a-text-file )पेशेवरों: सभी चर परिभाषाएं स्क्रिप्ट के भीतर निहित हैं। स्क्रिप्ट को मैन्युअल रूप से डाउनलोड करना और इंस्टॉलर पर संपादक पसंद करने वाले उपयोगकर्ताओं के लिए चर को कॉन्फ़िगर करना आसान है।
विपक्ष: एक बार वे जगह में होने के बाद इंस्टॉलर के माध्यम से चर को फिर से कॉन्फ़िगर करना मुश्किल है। जब तक मैं एक अधिक जटिल regexp नहीं बनाऊंगा जो त्रुटियों से ग्रस्त होगा।
कॉन्फ़िगरेशन फ़ाइल का उपयोग करें , मूल रूप से असाइनमेंट के साथ एक और शेल स्क्रिप्ट, और
source
इसे शामिल करने के लिए उपयोग करें। (और शायद इसे अंदर रखें~/.scriptname
; मुख्य स्क्रिप्ट की प्रतिलिपि बनाई गई है/usr/local/bin
)पेशेवरों: स्क्रिप्ट को फिर से कॉन्फ़िगर करना आसान है। यहां तक कि मुख्य स्क्रिप्ट से ऐसा करने के लिए एक पैरामीटर भी जोड़ा जा सकता है (संभवत: पहले समाधान में भी काम करेगा, लेकिन खुद से एक स्क्रिप्ट को संपादित करना बहुत अच्छा विचार नहीं है)
विपक्ष: स्क्रिप्ट अब दो फ़ाइलों पर निर्भर है और उपयोगकर्ता को कॉन्फ़िगरेशन फ़ाइल बनाने के लिए इंस्टॉलर को चलाने के लिए आवश्यक है। यदि कोई मौजूद नहीं है, तो यह एक कॉन्फिगर फाइल को ऑटो द्वारा हल किया जा सकता है। लेकिन बाहरी कॉन्फ़िगरेशन फ़ाइल का पता लगाना अभी भी उन उपयोगकर्ताओं के लिए अधिक बोझिल होगा जो केवल स्क्रिप्ट डाउनलोड करना चाहते हैं, इसे संपादित करते हैं, और इसके साथ किया जाता है।
साथ ही, स्थापना के बाद उपयोगकर्ता द्वारा कॉन्फ़िगरेशन को कैसे प्रबंधित किया जाना चाहिए, इसके बारे में कुछ विकल्प:
जैसे Git
$ myscript config server.host example.org $ myscript config server.proxypath / घर / johndoe / प्रॉक्सी $ myscript config server.httppath / घर / johndoe / वेबइंटरएक्टिव
$ myscript कॉन्फ़िगरेशन
सर्वर होस्टनाम
दर्ज करें : example.org सर्वर पर प्रॉक्सी के
लिए पथ दर्ज करें: / home / johndoe /xy सर्वर पर http निर्देशिका का पथ दर्ज करें: / home / johndoe / webलंबे विकल्प
$ myscript --host example.org के साथ गेटअपसरल
$ myscript config example.org / home / johndoe /xy / home / johndoe / web
क्या ऐसा करने के कोई अन्य तरीके हैं जिन पर आप विचार करेंगे?
किसी भी सर्वोत्तम प्रथाओं, सुरुचिपूर्ण कुछ भी?