Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत · पाठ

स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)

विशेष चरों और 'getopts' का उपयोग करके अपनी स्क्रिप्ट में तर्क भेजना और कमांड-लाइन विकल्पों का विश्लेषण करना सीखें।

पाठ 3, कुल 4 में से12 चरण

स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts), CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्क्रिप्ट तर्क: इनका उपयोग क्यों करें?

क्या आपने कभी ls -l या cp file1 file2 जैसी कमांड का उपयोग किया है? -l, file1 और file2 सभी तर्क हैं! वे कमांड को बताते हैं कि क्या करना है या किस पर कार्य करना है।

Bash स्क्रिप्टिंग में तर्क आपकी स्क्रिप्ट को लचीला बनाते हैं। मानों को सीधे कोड में लिखने के बजाय, स्क्रिप्ट चलाते समय कमांड लाइन से इनपुट स्वीकार कर सकती है।

स्थितीय तर्कों तक पहुँचना

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

  • पहला तर्क $1 होता है।
  • दूसरा तर्क $2 होता है।
  • इसी तरह आगे $9 तक।

9 से आगे के तर्कों के लिए ${10}, ${11} आदि जैसे घुंघराले कोष्ठक का उपयोग करें। इन चरों में आपकी स्क्रिप्ट को दिए गए मान रहते हैं।

प्रदर्शन: स्थितीय तर्क

आइए देखें कि स्क्रिप्ट में इन तर्कों तक कैसे पहुँचा जाता है। इसे greet.sh के रूप में सहेजें और ./greet.sh Alice Bob के साथ चलाएँ।

#!/bin/bash

echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"

`$0` और `$#`: स्क्रिप्ट की जानकारी

Bash कुछ और विशेष चर भी उपलब्ध कराता है, जो आपको स्क्रिप्ट और उसके तर्कों के बारे में जानकारी देते हैं:

  • $0: इसमें चल रही स्क्रिप्ट का नाम होता है। यह त्रुटि संदेशों या लॉगिंग के लिए उपयोगी है।
  • $#: इस चर में स्क्रिप्ट को दिए गए स्थितीय तर्कों की कुल संख्या होती है।

इनकी सहायता से आपकी स्क्रिप्ट अधिक विश्वसनीय और उपयोगकर्ता-अनुकूल बनती हैं।

प्रदर्शन: `$0` और `$#`

इस स्क्रिप्ट को तर्कों की अलग-अलग संख्या के साथ चलाएँ, जैसे ./info.sh one two three या केवल ./info.sh।

#!/bin/bash

echo "Script name: $0"
echo "Number of arguments received: $#"

`$@` बनाम `$*`: सभी तर्क

कभी-कभी आपको एक साथ सभी तर्कों का संदर्भ देना होता है। Bash इसके लिए दो तरीके प्रदान करता है:

  • $@: अलग-अलग तर्कों में फैलता है। डबल कोट में ("$@") लिखने पर प्रत्येक तर्क अलग शब्द बना रहता है, भले ही उसमें रिक्त स्थान हों। लूप के लिए आमतौर पर यही पसंद किया जाता है।
  • $*: सभी तर्कों की एकल स्ट्रिंग में फैलता है। डबल कोट में ("$*") लिखने पर सभी तर्क एक ही शब्द में मिल जाते हैं और IFS के पहले वर्ण (आंतरिक फ़ील्ड विभाजक, आमतौर पर रिक्त स्थान) से अलग होते हैं।

तर्कों पर क्रम遍ण करते समय रिक्त स्थान सुरक्षित रखने के लिए हमेशा "$@" का उपयोग करें!

प्रदर्शन: `"$@"` के साथ लूप

यह स्क्रिप्ट दिखाती है कि "$@" रिक्त स्थान वाले तर्कों को सही ढंग से संभालता है। इसे इस तरह चलाएँ: ./loop_args.sh hello "world wide" web

#!/bin/bash

echo "Processing arguments with \"$@\":"
for arg in "$@"; do
  echo "  Argument: [$arg]"
done

echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
  echo "  Argument: [$arg]"
done

विकल्प: स्थितीय तर्कों से आगे

सरल मामलों के लिए स्थितीय तर्क अच्छे हैं, लेकिन यदि आपकी स्क्रिप्ट को वैकल्पिक फ़्लैग या नामित पैरामीटर चाहिए हों, जैसे विस्तृत जानकारी के लिए -v या -f filename?

यहीं कमांड-लाइन विकल्प उपयोगी होते हैं। वे स्क्रिप्ट को अधिक लचीला और उपयोगकर्ता-अनुकूल बनाते हैं तथा उपयोगकर्ताओं को किसी भी क्रम में सेटिंग निर्दिष्ट करने देते हैं।

Bash इस प्रकार के विकल्पों का विश्लेषण करने के लिए विशेष रूप से getopts कमांड उपलब्ध कराता है।

`getopts` सिंटैक्स: `optstring`

getopts का मूल सिंटैक्स है: getopts optstring variable।

  • optstring: मान्य विकल्प वर्णों की एक स्ट्रिंग। यदि किसी विकल्प के लिए तर्क आवश्यक हो, जैसे -f filename, तो उस वर्ण के बाद कोलन लगाएँ, जैसे f:।
  • variable: वह चर नाम जिसमें getopts वर्तमान में संसाधित किए जा रहे विकल्प वर्ण को रखेगा, जैसे opt।

getopts विकल्प तर्कों के लिए OPTARG और अगले तर्क के अनुक्रमांक के लिए OPTIND भी निर्धारित करता है।

प्रदर्शन: मूल `getopts`

यह स्क्रिप्ट -v (विस्तृत जानकारी) और -f (फ़ाइल) विकल्पों पर प्रक्रिया करती है। इसे चलाकर देखें: ./options.sh -v -f mydata.txt -x या ./options.sh -vf mydata.txt

#!/bin/bash

while getopts "vf:" opt; do
  case $opt in
    v)
      echo "Verbose mode enabled."
      ;;
    f)
      echo "File specified: $OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

त्वरित जाँच: तर्क चर

निम्न स्क्रिप्ट और उसके निष्पादन पर विचार करें:

#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
  echo "Arg: $arg"
done

यदि आप इसे चलाते हैं: ./myscript.sh "Hello World" 123

आउटपुट क्या होगा?

पुनरावलोकन: तर्क और विकल्प

बहुत अच्छा! आपने अपनी Bash स्क्रिप्ट को अधिक बहुमुखी बनाना सीख लिया है:

  • स्थितीय तर्क: तर्कों तक सीधे पहुँचने के लिए $1, $2 आदि का उपयोग करें।
  • विशेष चर: स्क्रिप्ट के नाम के लिए $0, तर्कों की संख्या के लिए $# और सभी तर्कों पर सुरक्षित रूप से क्रम遍ण करने के लिए "$@" का उपयोग करें।
  • कमांड-लाइन विकल्प: नामित विकल्पों, जैसे -v, और उनके तर्कों, जैसे -f filename, का विश्लेषण करने के लिए getopts का उपयोग करें। इससे आपकी स्क्रिप्ट अधिक विश्वसनीय और उपयोगकर्ता-अनुकूल बनती हैं।

शक्तिशाली और लचीले कमांड-लाइन उपकरण बनाने के लिए अपनी स्क्रिप्ट में इनका अभ्यास करें!

शुरुआत निःशुल्क

एआई शिक्षक के साथ Bash सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
88

अक्सर पूछे जाने वाले प्रश्न

क्या “स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)” पाठ निःशुल्क है?

हाँ—“स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)” में मैं क्या सीखूँगा?

विशेष चरों और 'getopts' का उपयोग करके अपनी स्क्रिप्ट में तर्क भेजना और कमांड-लाइन विकल्पों का विश्लेषण करना सीखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. लूप संरचनाएँ (for, while)
  2. Bash स्क्रिप्ट में फ़ंक्शन
  3. स्क्रिप्ट तर्क और विकल्प ($@, $#, getopts)
  4. case कथन और पैटर्न मिलान
← Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पर वापस जाएँ