मैं बैश स्क्रिप्ट में तर्क कैसे पास करूं?

How Do I Pass Argument Bash Script



अधिकांश लिनक्स टकसाल 20 उपयोगकर्ता बैश स्क्रिप्ट में तर्क पारित करते समय खुद को अटका हुआ पाते हैं। निष्पादित होने पर आप तर्कों को किसी भी बैश स्क्रिप्ट में पास कर सकते हैं। बैश स्क्रिप्ट में तर्क पारित करने के कई सरल और उपयोगी तरीके हैं। इस लेख गाइड में, हम आपको अपनी बैश स्क्रिप्ट में तर्कों को पारित करने और उनका उपयोग करने के कुछ बहुत ही आसान तरीकों के बारे में बताएंगे।

डिफ़ॉल्ट चर का उपयोग करके तर्क पारित करना:

टच कमांड का उपयोग करके किसी भी नाम से एक नई फाइल बनाएं, जैसे, file.sh।







$स्पर्शफ़ाइल का नाम



इस नई बनाई गई फ़ाइल को खोलें और इसमें कुछ बैश स्क्रिप्ट जोड़ें। मैंने कुछ डिफ़ॉल्ट चर जोड़े हैं, उदा। फलस्वरूप $1, $2 और $3. टर्मिनल के माध्यम से जो भी तर्क पारित किए जाएंगे, वे बताए गए चर में संग्रहीत किए जाएंगे।







आपको कुछ तर्कों के बाद ./ कमांड का उपयोग करके इस फ़ाइल को चलाना होगा। जैसा कि आप चित्र में देख सकते हैं कि जब मैंने तर्कों को पारित किया, तो एक त्रुटि होती है: अनुमति अस्वीकृत। ऐसा इसलिए है क्योंकि इस फ़ाइल में निष्पादन अधिकार नहीं हैं।

$./फ़ाइल नाम तर्क1 तर्क2 तर्क

तो इस फ़ाइल को निष्पादन अधिकार देने के लिए, ऐसा करने के लिए sudo chmod कमांड का उपयोग करें।



$सुडो चामोद+x फ़ाइल नाम

अब, उसी उपरोक्त आदेश का उपयोग करके फ़ाइल को फिर से चलाएं। इस बार मैंने अलग-अलग तर्क दिए हैं। आप देखेंगे कि नए पारित तर्क डिफ़ॉल्ट चर में संग्रहीत हैं।

तर्क के रूप में शेल स्क्रिप्ट नाम पास करना:

अब, उसी पुरानी फ़ाइल का उपयोग करके file.sh अपने डिफ़ॉल्ट चर में थोड़ा बदलाव के साथ। आपको दिखाए गए अनुसार स्क्रिप्ट में वेरिएबल $0 जोड़ना होगा।

समान ./ शेल स्क्रिप्ट कमांड चलाने पर, आपकी शेल स्क्रिप्ट का नाम, उदा। ./filename एक तर्क के रूप में $0 चर में संग्रहीत किया जाएगा।

चर के लिए एक सरणी के रूप में तर्क पारित करना:

उसी फ़ाइल file.sh से शुरू करते हुए, आपको पुरानी स्क्रिप्ट में कुछ अतिरिक्त लाइनें जोड़नी होंगी। सरणी नामक एक चर घोषित करें। एक डिफ़ॉल्ट चर [ईमेल संरक्षित] जोड़ें जो उपयोगकर्ता द्वारा दर्ज किए गए तर्कों को एक सरणी के रूप में संग्रहीत करेगा। इन तर्कों को चर सरणी में पार्स किया जाएगा। अंतिम पंक्ति सूचकांक संख्या द्वारा क्रमबद्ध चर सरणी के सभी तर्कों को प्रदर्शित करेगी।

./ शेल स्क्रिप्ट निष्पादित करें। आप देखेंगे कि यह एक सरणी के रूप में संग्रहीत तर्कों या मूल्यों को प्रदर्शित करेगा [ईमेल संरक्षित] चर सरणी में पार्स किया गया है लेकिन दूसरे इको स्टेटमेंट में शेल स्क्रिप्ट नाम नहीं है। आपके पास निम्न आउटपुट होगा।

$./फ़ाइल नाम तर्क1 तर्क2 तर्क

एक ही स्क्रिप्ट के साथ एक ही फाइल का प्रयोग करें। चित्र में स्पष्ट रूप से अंतिम पंक्ति से ${array[3]} को हटा दें।

./ कमांड को निष्पादित करने के बाद, आप एक समान आउटपुट देखेंगे जैसा कि आपको उपरोक्त उदाहरण में बिना किसी बदलाव के मिला है।

आप एक ही शब्द के साथ बैश स्क्रिप्ट की अंतिम पंक्ति को बदलकर भी वही परिणाम प्राप्त कर सकते हैं। आपको बस इको स्टेटमेंट में [ईमेल संरक्षित] जोड़ना है, और यह इस चर सरणी में मौजूद तर्कों को प्रदर्शित करेगा।

इसलिए ./ कमांड को फिर से चलाने पर आपको वही परिणाम मिलेंगे।

उत्तीर्ण तर्कों की कुल संख्या की जाँच करें:

इसके विपरीत, यदि आप उपयोगकर्ता द्वारा पारित तर्कों की कुल संख्या जानना चाहते हैं, तो आप ऐसा भी कर सकते हैं। इस उद्देश्य के लिए, आपको बस [ईमेल संरक्षित] को इको में $# से बदलना होगा।

फिर से ./ कमांड को निष्पादित करते हुए, अब आप स्क्रिप्ट को दिए गए तर्कों के पूरे आंकड़े को देखने जा रहे हैं। हमारे मामले में, 3 तर्कों को मान के रूप में पारित किया जाता है।

तर्कों के लाइन आउटपुट द्वारा लाइन बनाएं:

होम निर्देशिका में एक नई फ़ाइल test.sh बनाएँ। दिखाए गए अनुसार बैश स्क्रिप्ट जोड़ें।

अब वही पुराना कमांड अलग-अलग तर्कों के साथ चलाएँ। सबसे पहले, आपको त्रुटि दिखाई देगी: अनुमति अस्वीकृत।

इस फ़ाइल को sudo विशेषाधिकार देने के लिए आपको chmod कमांड को निष्पादित करना होगा। उसके बाद, ./ शेल स्क्रिप्ट कमांड फिर से चलाएँ। और आपको तर्कों के क्रमबद्ध आउटपुट द्वारा लाइन मिल जाएगी।

तर्क सूचकांक संख्या के माध्यम से चर सीमित करें:

यदि आप चर को उसकी अनुक्रमणिका संख्या का उपयोग करके सीमित करना चाहते हैं, तो आप इसे बहुत आसानी से कर सकते हैं। $ चिह्न के बाद घुंघराले कोष्ठक जोड़ें और तर्क सूचकांक संख्या जोड़ें जिसे आप अन्य तर्कों से पहले प्रदर्शित करना चाहते हैं।

यदि उपयोगकर्ताओं द्वारा प्रदान किए गए तर्क सीमा चर में प्रदान की गई अनुक्रमणिका संख्या से कम हैं, तो आपको एक खाली तर्क मान मिलेगा। उदाहरण के तौर पर, मैंने 4 तर्क दिए हैं, लेकिन मैंने 05 तर्क मान प्रदर्शित करने के लिए दिया है। इस स्थिति में, चर खाली प्रदर्शित किया जाएगा क्योंकि पांचवां तर्क पारित नहीं किया गया है।

लेकिन जब आप कमांड में समान या अधिक संख्या में तर्क पास करते हैं, तो आपको परिणाम में दिखाया गया मान प्रदर्शित होगा।

विशिष्ट मूल्य तर्कों की जाँच करना:

अपने होम डायरेक्टरी में Check.sh नाम से एक नई फाइल बनाएं। नीचे दी गई छवि में दिखाए गए अनुसार वही बैश स्क्रिप्ट जोड़ें। इस स्क्रिप्ट में, हमारे पास उपयोगकर्ता द्वारा पारित तर्क मान को संग्रहीत करने के लिए एक चर var है। फिर हमारे पास एक if स्टेटमेंट होता है, जो यह जांच करेगा कि तर्क मान का मिलान किया जाना है या नहीं। यदि तर्क मान कोष्ठक में दिए गए मान से मेल खाता है, तो पहला इको स्टेटमेंट निष्पादित किया जाएगा। यदि मान मेल नहीं खाता है, तो दूसरा इको स्टेटमेंट निष्पादित किया जाएगा।

जब हम शेल स्क्रिप्ट कमांड चलाते हैं, तो यह एक त्रुटि उत्पन्न करेगा। chmod कमांड का उपयोग करके, हम इस त्रुटि को ठीक कर सकते हैं।

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

दूसरी ओर, यदि आप शेल स्क्रिप्ट में अलग-अलग तर्क मान प्रदान करते हैं, तो यह अन्य इको स्टेटमेंट प्रदर्शित करेगा। यहाँ, मैंने रिम्शा को एक तर्क मान के रूप में जोड़ा है, जो कि if कथन में दिए गए मान से भिन्न है। तो बैश स्क्रिप्ट दूसरे इको स्टेटमेंट को निष्पादित करेगी।

निष्कर्ष:

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