बैश में फंक्शन बनाने और कॉल करने पर एक त्वरित गाइड।
एक फंक्शन पुन: प्रयोज्य कोड का एक ब्लॉक होता है जिसका उपयोग किसी कार्य को करने के लिए किया जाता है। फंक्शन के साथ, हमें बेहतर मॉड्यूलरिटी और कोड पुन: उपयोग की उच्च डिग्री मिलती है।
बैश कुछ बिल्ट-इन फंक्शन प्रदान करता है जैसे echo और read, लेकिन हम अपने स्वयं के फंक्शन भी बना सकते हैं।
बैश में फंक्शन बनाना
बैश में फंक्शन बनाने के दो तरीके हैं:
एक तरीका है केवल फंक्शन नाम का उपयोग करना, उदाहरण:
functionName(){ // फंक्शन का स्कोप } कॉम्पैक्ट संस्करण:
functionName(){ echo "hello"; } दूसरा तरीका है function कीवर्ड का उपयोग करके फंक्शन घोषित करना:
function functionName { // फंक्शन का स्कोप } कॉम्पैक्ट संस्करण:
function functionName { echo "hello"; } ध्यान दें कि function कीवर्ड का उपयोग करके फंक्शन बनाते समय हमें () की आवश्यकता नहीं होती।
बैश फंक्शन के बारे में ध्यान रखने योग्य महत्वपूर्ण बिंदु:
- कर्ली ब्रेसेस
{}के बीच का कोड फंक्शन बॉडी और स्कोप होता है - फंक्शन को कॉल करते समय, हम बैश स्क्रिप्ट में कहीं से भी केवल फंक्शन नाम का उपयोग करते हैं
- फंक्शन का उपयोग करने से पहले उसे परिभाषित किया जाना चाहिए
- कॉम्पैक्ट संस्करण का उपयोग करते समय, अंतिम कमांड में सेमीकोलन
;होना चाहिए
उदाहरण:
निम्न कोड एक फंक्शन बनाता है जो कंसोल पर "Hello World" प्रिंट करता है। फंक्शन का नाम printHello है:
#!/bin/bash printHello(){ echo "Hello World!" } बैश में फंक्शन कॉल करना
उपरोक्त फंक्शन को कैसे कॉल करें? आपको बस अपनी बैश स्क्रिप्ट में फंक्शन का नाम लिखना है और यह कॉल हो जाएगा।
उदाहरण के लिए:
#!/bin/bash printHello(){ echo "Hello World!" } # स्क्रिप्ट में कहीं से भी printHello फंक्शन को नाम लिखकर कॉल करें printHello आउटपुट:
"Hello World" आर्गुमेंट पास करना
उपरोक्त फंक्शन printHello() में कोई पैरामीटर नहीं है। जब भी हम इसे कॉल करते हैं, हमें "Hello World" आउटपुट मिलता है। लेकिन क्या होगा अगर हम एक अधिक जेनेरिक फंक्शन बनाना चाहें? उदाहरण के लिए, हम फंक्शन को कुछ आर्गुमेंट के साथ कॉल कर सकते हैं और यह वही प्रिंट करेगा जो हम इसे भेजते हैं।
इसके दो तरीके हैं।
पहला, हम printHello() फंक्शन को पास किए गए आर्गुमेंट को प्रिंट करने के लिए संशोधित कर सकते हैं:
उदाहरण के लिए:
#!/bin/bash printAny(){ echo "Hello " $1 } printAny World printAny DevQa printAny I love coding! आउटपुट:
Hello World Hello DevQA Hello I ध्यान दें कि तीसरा प्रिंट स्टेटमेंट printAny I love coding! केवल "Hello, I" आउटपुट करता है।
ऐसा इसलिए है क्योंकि हमारा फंक्शन केवल 1 पैरामीटर $1 लेने के लिए डिज़ाइन किया गया है। "I love coding!" शब्द वास्तव में 3 पैरामीटर हैं।
यदि हम इसे पूरा प्रिंट करना चाहते हैं तो हमें टेक्स्ट को कोट्स में रखना होगा
उदाहरण के लिए:
#!/bin/bash printAny(){ echo "Hello " $1 } printAny "I love coding!" आउटपुट:
Hello I love coding एक और उदाहरण, हम अंक भी पास कर सकते हैं:
#!/bin/bash add() { result=$(($1 + $2)) echo "Result is: $result" } add 1 2 आउटपुट:
Result is: 3 मान वापस करना
बैश फंक्शन मान भी वापस कर सकते हैं।
उदाहरण के लिए:
#!/bin/bash add() { result=$(($1 + $2)) } add 1 2 echo "The sum is: "$result आउटपुट:
The sum is: 3 फंक्शन से मान वापस करने का एक और तरीका है परिणाम को एक वेरिएबल में असाइन करना जिसे आवश्यकतानुसार उपयोग किया जा सकता है।
उदाहरण के लिए:
#!/bin/bash add () { local result=$(($1 + $2)) echo "$result" } result="$(add 1 2)" echo "The sum is: "$result आउटपुट:
The sum is: 3