आर्ग्युमेंट्स, रिटर्न वैल्यू, और स्कोप

Bash Scripting परिचय

Alex Scriven

Data Scientist

Bash फंक्शंस में आर्ग्युमेंट पास करना

फंक्शन में आर्ग्युमेंट पास करना वैसा ही है जैसा आप स्क्रिप्ट में करते हैं. $1 नोटेशन उपयोग करें.

आपके पास पहले कवर किए गए ARGV के स्पेशल प्रॉपर्टीज भी हैं:

  • हर आर्ग्युमेंट को $1, $2 नोटेशन से एक्सेस करें.
  • $@ और $* ARGV में सभी आर्ग्युमेंट देते हैं
  • $# आर्ग्युमेंट्स की संख्या देता है
Bash Scripting परिचय

आर्ग्युमेंट पास करने का उदाहरण

चलिए डेमो के लिए कुछ फ़ाइल नाम आर्ग्युमेंट्स के रूप में पास करते हैं. हम उन पर लूप चलाएँगे और प्रिंट करेंगे.

function print_filename {
    echo "The first file was $1"

for file in $@ do echo "This file has name $file" done }
print_filename "LOTR.txt" "mod.txt" "A.py"

 

 

 

The first file was LOTR.txt
This file has name LOTR.txt
This file has name mod.txt
This file has name A.py
Bash Scripting परिचय

प्रोग्रामिंग में स्कोप

 

प्रोग्रामिंग में 'स्कोप' बताता है कि कोई वैरिएबल कितनी जगह एक्सेसिबल है.

  • 'ग्लोबल' मतलब यह प्रोग्राम में कहीं भी एक्सेस हो सकता है, FOR लूप, IF स्टेटमेंट, फंक्शंस आदि के अंदर भी.
  • 'लोकल' मतलब यह सिर्फ प्रोग्राम के एक हिस्से में एक्सेस है.

यह क्यों मायने रखता है? अगर आप किसी लोकल स्कोप वाली चीज़ को बाहर एक्सेस करेंगे तो आपका प्रोग्राम एरर के साथ फेल हो सकता है!

Bash Scripting परिचय

Bash फंक्शंस में स्कोप

अधिकांश भाषाओं (जैसे Python और R) के विपरीत, Bash में सभी वैरिएबल डिफ़ॉल्ट रूप से ग्लोबल होते हैं.

function print_filename {
    first_filename=$1
}

print_filename "LOTR.txt" "model.txt" echo $first_filename
LOTR.txt

सावधान रहें, ग्लोबल स्कोप खतरनाक हो सकता है क्योंकि अनचाही चीज़ें होने का जोखिम बढ़ जाता है.

Bash Scripting परिचय

Bash फंक्शंस में स्कोप सीमित करना

आप वैरिएबल का स्कोप सीमित करने के लिए local कीवर्ड उपयोग कर सकते हैं.

function print_filename {
    local first_filename=$1
}

print_filename "LOTR.txt" "model.txt" echo $first_filename


 

प्र: सिर्फ खाली लाइन क्यों आई, एरर क्यों नहीं?

उत्तर: first_filename को ग्लोबल पहले ARGV एलिमेंट ($1) से असाइन किया गया.

मैंने स्क्रिप्ट बिना आर्ग्युमेंट्स चलाई (bash script.sh), इसलिए यह खाली एलिमेंट पर डिफ़ॉल्ट हो गया. तो सावधान रहें!

Bash Scripting परिचय

रिटर्न वैल्यूज़

हमने आर्ग्युमेंट्स अंदर लेना सीखा — अब उन्हें बाहर कैसे लाएँ?

Bash में return सिर्फ यह दर्शाता है कि फंक्शन सफल हुआ (0) या फेल (1-255 में कोई और मान). यह ग्लोबल वैरिएबल $? में कैप्चर होता है.

हमारे विकल्प:

  1. किसी ग्लोबल वैरिएबल को असाइन करें
  2. जो चाहिए उसे echo करें (फंक्शन की आखिरी लाइन) और shell-within-a-shell से कैप्चर करें
Bash Scripting परिचय

रिटर्न एरर

रिटर्न एरर देखें:

function function_2 {
    echlo # An error of 'echo'
}

function_2 # Call the function echo $? # Print the return value
script.sh: line 2: echlo: command not found
127

क्या हुआ?

  1. फंक्शन कॉल पर एरर आया
    • स्क्रिप्ट ने 'echlo' नाम का प्रोग्राम ढूँढा, पर वह मौजूद नहीं था
  2. $? में रिटर्न वैल्यू 127 (एरर) थी
Bash Scripting परिचय

सही तरह रिटर्न करना

अब echo और shell-within-a-shell कैप्चर से कोई वैल्यू सही तरह रिटर्न करें ताकि स्क्रिप्ट में आगे उपयोग हो सके:

function convert_temp {
    echo $(echo "scale=2; ($1 - 32) * 5 / 9" | bc)
}

converted=$(convert_temp 30) echo "30F in Celsius is $converted C"
30F in Celsius is -1.11 C
  • ध्यान दें, अब हम इंटरमीडियरी वैरिएबल नहीं बना रहे हैं.
Bash Scripting परिचय

अभ्यास करते हैं!

Bash Scripting परिचय

Preparing Video For Download...