Bash Scripting परिचय
Alex Scriven
Data Scientist
फंक्शन में आर्ग्युमेंट पास करना वैसा ही है जैसा आप स्क्रिप्ट में करते हैं. $1 नोटेशन उपयोग करें.
आपके पास पहले कवर किए गए ARGV के स्पेशल प्रॉपर्टीज भी हैं:
$1, $2 नोटेशन से एक्सेस करें.$@ और $* ARGV में सभी आर्ग्युमेंट देते हैं$# आर्ग्युमेंट्स की संख्या देता हैचलिए डेमो के लिए कुछ फ़ाइल नाम आर्ग्युमेंट्स के रूप में पास करते हैं. हम उन पर लूप चलाएँगे और प्रिंट करेंगे.
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
प्रोग्रामिंग में 'स्कोप' बताता है कि कोई वैरिएबल कितनी जगह एक्सेसिबल है.
यह क्यों मायने रखता है? अगर आप किसी लोकल स्कोप वाली चीज़ को बाहर एक्सेस करेंगे तो आपका प्रोग्राम एरर के साथ फेल हो सकता है!
अधिकांश भाषाओं (जैसे Python और R) के विपरीत, Bash में सभी वैरिएबल डिफ़ॉल्ट रूप से ग्लोबल होते हैं.
function print_filename { first_filename=$1 }print_filename "LOTR.txt" "model.txt" echo $first_filename
LOTR.txt
सावधान रहें, ग्लोबल स्कोप खतरनाक हो सकता है क्योंकि अनचाही चीज़ें होने का जोखिम बढ़ जाता है.
आप वैरिएबल का स्कोप सीमित करने के लिए 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 में return सिर्फ यह दर्शाता है कि फंक्शन सफल हुआ (0) या फेल (1-255 में कोई और मान). यह ग्लोबल वैरिएबल $? में कैप्चर होता है.
हमारे विकल्प:
echo करें (फंक्शन की आखिरी लाइन) और shell-within-a-shell से कैप्चर करेंरिटर्न एरर देखें:
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
क्या हुआ?
$? में रिटर्न वैल्यू 127 (एरर) थीअब 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 परिचय