शुरुआती गाइड बाश - इनपुट पैरामीटर्स

शुरुआती गाइड टू बीएएसएच श्रृंखला के दूसरे भाग में आपका स्वागत है जो अद्वितीय है कि शुरुआती लोगों के लिए शुरुआत में यह एकमात्र बाश ट्यूटोरियल है।

इस गाइड के पाठक अपना ज्ञान तैयार करेंगे क्योंकि मैं अपना ज्ञान बढ़ाता हूं और आशा करता हूं कि हम इसके अंत तक कुछ काफी चालाक स्क्रिप्ट लिख सकेंगे।

पिछले हफ्ते मैंने अपनी पहली लिपि बनाने में शामिल किया जो कि "हैलो वर्ल्ड" शब्द को प्रदर्शित करता था। इसमें टेक्स्ट एडिटर्स, टर्मिनल विंडो कैसे खोलें, अपनी स्क्रिप्ट्स कहां डालें, "हैलो वर्ल्ड" शब्द कैसे प्रदर्शित करें और उद्धरण ("") जैसे बचने वाले पात्रों पर कुछ बेहतर अंक कैसे प्रदर्शित करें।

इस सप्ताह मैं इनपुट पैरामीटर को कवर करने जा रहा हूं। ऐसे अन्य गाइड हैं जो इस तरह की चीज सिखाते हैं लेकिन मुझे लगता है कि वे कुछ कम स्तर की चीजों में कूदते हैं और शायद अधिक जानकारी प्रदान करते हैं।

एक पैरामीटर क्या है?

अंतिम ट्यूटोरियल से "हैलो वर्ल्ड" स्क्रिप्ट में यह सब बहुत स्थिर था। लिपि वास्तव में बहुत कुछ नहीं किया था।

हम "हैलो वर्ल्ड" स्क्रिप्ट पर कैसे सुधार कर सकते हैं?

एक स्क्रिप्ट के बारे में क्या है जो इसे चलाने वाले व्यक्ति को धन्यवाद देता है? "हैलो वर्ल्ड" कहने के बजाय यह "हैलो गैरी", "हैलो टिम" या "हैलो डॉली" कहेंगे।

इनपुट पैरामीटर स्वीकार करने की क्षमता के बिना हमें तीन स्क्रिप्ट "hellogary.sh", "hellotim.sh" और "hellodolly.sh" लिखने की आवश्यकता होगी।

हमारी स्क्रिप्ट को इनपुट पैरामीटर पढ़ने की अनुमति देकर हम किसी को भी नमस्कार करने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं।

ऐसा करने के लिए टर्मिनल विंडो (CTRL + ALT + T) खोलें और निम्न टाइप करके अपनी स्क्रिप्ट फ़ोल्डर पर नेविगेट करें: ( सीडी कमांड के बारे में )

सीडी स्क्रिप्ट्स

निम्नलिखित टाइप करके greetme.sh नामक एक नई स्क्रिप्ट बनाएं: ( स्पर्श कमांड के बारे में )

greetme.sh स्पर्श करें

निम्नलिखित टाइप करके अपने पसंदीदा संपादक में स्क्रिप्ट खोलें: ( नैनो कमांड के बारे में )

नैनो greetme.sh

नैनो के भीतर निम्न पाठ दर्ज करें:

#! / बिन / बैश गूंज "हैलो $ @"

फाइल को सहेजने के लिए CTRL और O दबाएं और फिर फ़ाइल को बंद करने के लिए CTRL और X दबाएं।

स्क्रिप्ट चलाने के लिए निम्न नाम को अपने नाम से बदलकर कमांड लाइन में दर्ज करें।

sh greetme.sh

अगर मैं अपने नाम से स्क्रिप्ट चलाता हूं तो यह शब्द "हैलो गैरी" प्रदर्शित करता है।

पहली पंक्ति में #! / Bin / bash लाइन है जिसका उपयोग फ़ाइल को बैश स्क्रिप्ट के रूप में पहचानने के लिए किया जाता है।

दूसरी पंक्ति हैलो शब्द गूंजने के लिए गूंज कथन का उपयोग करती है और फिर अजीब $ @ नोटेशन है। ( गूंज आदेश के बारे में )

$ @ स्क्रिप्ट नाम के साथ दर्ज किए गए प्रत्येक पैरामीटर को प्रदर्शित करने के लिए विस्तारित करता है। तो अगर आपने "sh greetme.sh tim" टाइप किया है तो शब्द "हैलो टाइम" प्रदर्शित किया जाएगा। यदि आपने "greetme.sh tim smith" टाइप किया है तो शब्द "हैलो टाइम स्मिथ" प्रदर्शित किया जाएगा।

Greetme.sh स्क्रिप्ट के लिए यह सिर्फ पहले नाम का उपयोग करके हैलो कहने के लिए अच्छा हो सकता है। जब वे मुझसे मिलते हैं तो कोई भी "हैलो गैरी न्यूवेल" कहता है, लेकिन वे "हैलो गैरी" कह सकते हैं।

आइए स्क्रिप्ट को बदल दें ताकि यह पहले पैरामीटर का उपयोग कर सके। निम्न टाइप करके नैनो में greetme.sh स्क्रिप्ट खोलें:

नैनो greetme.sh

स्क्रिप्ट को बदलें ताकि वह निम्नानुसार पढ़ सके:

#! / बिन / बैश गूंज "हैलो $ 1"

CTRL और O दबाकर स्क्रिप्ट को सहेजें और फिर CTRL और X दबाकर बाहर निकलें।

नीचे दिखाए गए स्क्रिप्ट को चलाएं (मेरे नाम को अपने साथ बदलें):

sh greetme.sh गैरी न्यूवेल

जब आप स्क्रिप्ट चलाते हैं तो यह केवल "हैलो गैरी" (या उम्मीद है कि "हैलो" और जो भी आपका नाम है।

$ प्रतीक के बाद 1 मूल रूप से गूंज कमांड को कहता है, पहले पैरामीटर का उपयोग करें। यदि आप $ 1 को $ 2 के साथ प्रतिस्थापित करते हैं तो यह "हैलो न्यूवेल" प्रदर्शित करेगा (या जो भी आपका उपनाम है)।

संयोग से यदि आपने $ 2 को $ 3 के साथ बदल दिया है और स्क्रिप्ट को केवल 2 पैरामीटर के साथ चलाया है तो आउटपुट बस "हैलो" होगा।

वास्तव में दर्ज पैरामीटर की संख्या को प्रदर्शित और संभालना संभव है और बाद के ट्यूटोरियल्स में मैं दिखाऊंगा कि सत्यापन उद्देश्यों के लिए पैरामीटर गिनती का उपयोग कैसे करें।

दर्ज किए गए पैरामीटर की संख्या प्रदर्शित करने के लिए greetme.sh स्क्रिप्ट (nano greetme.sh) खोलें और पाठ को निम्नानुसार संशोधित करें:

#! / bin / bash echo "आपने $ # नाम दर्ज किए हैं" echo "हैलो $ @"

नैनो से बाहर निकलने के लिए स्क्रिप्ट और CTRL और X को सहेजने के लिए CTRL और O दबाएं।

दूसरी पंक्ति पर $ # दर्ज पैरामीटर की संख्या प्रदर्शित करता है।

इस प्रकार यह सब उपन्यास रहा है लेकिन बहुत उपयोगी नहीं है। किसको एक स्क्रिप्ट चाहिए जो "हैलो" प्रदर्शित करती है?

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

इसके विपरीत, इनपुट पैरामीटर आपकी स्क्रिप्ट को इंटरैक्टिव बनाते हैं। इनपुट पैरामीटर के बिना आपको दर्जनों स्क्रिप्ट की ज़रूरत होगी जो सभी समान चीजें करते हैं लेकिन थोड़ा अलग नामों के साथ।

इस सब के साथ दिमाग में कुछ अन्य उपयोगी इनपुट पैरामीटर हैं जो जानना एक अच्छा विचार है और मैं उन्हें एक कोड स्निपेट में शामिल कर दूंगा।

अपनी greetme.sh स्क्रिप्ट खोलें और इसे निम्नानुसार संशोधित करें:

#! / बिन / बैश गूंज "फ़ाइल नाम: $ 0" गूंज "प्रक्रिया आईडी: $$" गूंज "---------------------------- --- "echo" आपने $ # नाम "echo" हैलो $ @ "दर्ज किया

फ़ाइल और CTRL और X को बाहर निकलने के लिए CTRL और O दबाएं।

अब स्क्रिप्ट चलाएं (अपने नाम से प्रतिस्थापित करें)।

sh greetme.sh

इस बार स्क्रिप्ट निम्नलिखित प्रदर्शित करता है:

फ़ाइल नाम: greetme.sh प्रक्रिया आईडी: 185 9 5 ------------------------------ आपने 2 नाम हैलो गैरी न्यूवेल दर्ज किया

स्क्रिप्ट की पहली पंक्ति पर $ 0 आपके द्वारा चलाए जा रहे स्क्रिप्ट का नाम प्रदर्शित करता है। ध्यान दें कि यह डॉलर शून्य है और डॉलर ओ नहीं है।

दूसरी पंक्ति पर $$ आपके द्वारा चल रहे स्क्रिप्ट की प्रक्रिया आईडी प्रदर्शित करता है। यह उपयोगी क्यों है? यदि आप अग्रभूमि में एक स्क्रिप्ट चला रहे हैं तो आप इसे CTRL और C. दबाकर रद्द कर सकते हैं। यदि आपने पृष्ठभूमि में स्क्रिप्ट चलाई है और यह लूपिंग शुरू कर रहा है और वही काम कर रहा है या आपके सिस्टम को नुकसान पहुंचाएगा तो आपको इसकी आवश्यकता होगी इसे मारने के लिए।

पृष्ठभूमि में चल रही एक स्क्रिप्ट को मारने के लिए आपको स्क्रिप्ट की प्रक्रिया आईडी की आवश्यकता है। अगर स्क्रिप्ट ने आउटपुट के हिस्से के रूप में प्रक्रिया आईडी दी तो यह अच्छा नहीं होगा। ( पीएस और हत्या आदेशों के बारे में )

अंत में इस विषय के साथ खत्म होने से पहले मैं इस बारे में चर्चा करना चाहता था कि आउटपुट कहां जाता है। जब भी स्क्रिप्ट चलती है तब तक स्क्रीन पर आउटपुट प्रदर्शित किया गया है।

स्क्रिप्ट आउटपुट को आउटपुट फ़ाइल में लिखा जाना काफी आम है। ऐसा करने के लिए अपनी स्क्रिप्ट को निम्नानुसार चलाएं:

sh greetme.sh गैरी> greetme.log

> उपर्युक्त आदेश में प्रतीक "नमस्ते गैरी" टेक्स्ट को greetme.log नामक फ़ाइल में आउटपुट करता है।

प्रत्येक बार जब आप स्क्रिप्ट को> प्रतीक के साथ चलाते हैं तो यह आउटपुट फ़ाइल की सामग्री को ओवरराइट करता है। यदि आप फ़ाइल में शामिल करना पसंद करेंगे> के साथ >> को प्रतिस्थापित करें।

सारांश

अब आप स्क्रीन पर टेक्स्ट लिखने और इनपुट पैरामीटर स्वीकार करने में सक्षम होना चाहिए।