Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बाश में फ़ंक्शन कैसे बनाएं और कॉल करें

बैश में फ़ंक्शन कैसे बनाएं और कॉल करें, इस पर एक त्वरित मार्गदर्शिका।

फ़ंक्शन पुन:प्रयोज्य कोड का एक ब्लॉक है जिसका उपयोग कुछ क्रिया करने के लिए किया जाता है। फ़ंक्शंस के साथ, हमें बेहतर मॉड्यूलरिटी और उच्च स्तर का कोड पुन:उपयोग मिलता है।

बैश कुछ अंतर्निहित कार्य प्रदान करता है जैसे कि echo और read , लेकिन हम अपने स्वयं के कार्य भी बना सकते हैं।

बैश में एक फंक्शन बनाना

बैश में फंक्शन बनाने के दो तरीके हैं:

एक तरीका केवल फ़ंक्शन नाम का उपयोग करना है, उदा:

functionName(){
  // scope of function
}

कॉम्पैक्ट संस्करण:

functionName(){ echo "hello"; }

दूसरा तरीका function . का उपयोग करके किसी फ़ंक्शन को घोषित करना है कीवर्ड:

function functionName {
  // scope of function
}

कॉम्पैक्ट संस्करण:

function functionName { echo "hello"; }

ध्यान दें कि कैसे हमें () . की आवश्यकता नहीं है function . का उपयोग करते समय फ़ंक्शन बनाने के लिए कीवर्ड।

बैश फ़ंक्शन के बारे में ध्यान देने योग्य महत्वपूर्ण बिंदु:

  • घुंघराले ब्रेसिज़ के बीच का कोड {} फंक्शन बॉडी और स्कोप है
  • किसी फ़ंक्शन को कॉल करते समय, हम बैश स्क्रिप्ट में कहीं से भी फ़ंक्शन नाम का उपयोग करते हैं
  • उपयोग किए जाने से पहले फ़ंक्शन को परिभाषित किया जाना चाहिए
  • संक्षिप्त संस्करण का उपयोग करते समय, अंतिम कमांड में एक अर्धविराम होना चाहिए ;

उदाहरण:

निम्न कोड एक फ़ंक्शन बनाता है जो कंसोल पर "हैलो वर्ल्ड" प्रिंट करता है। फ़ंक्शन का नाम printHello . कहा जाता है :

#!/bin/bash

printHello(){
    echo "Hello World!"
}

बैश में किसी फ़ंक्शन को कॉल करना

हम उपरोक्त फ़ंक्शन को कैसे कॉल करते हैं? आपको अपनी बैश स्क्रिप्ट में केवल फ़ंक्शन का नाम लिखना है और इसे कॉल किया जाएगा।

उदाहरण के लिए:

#!/bin/bash

printHello(){
    echo "Hello World!"
}

# Call printHello function from anywhere in the script by writing the name

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! केवल "हैलो, आई" आउटपुट हुआ।

ऐसा इसलिए है क्योंकि हमारे फ़ंक्शन को केवल 1 पैरामीटर $1 लेने के लिए डिज़ाइन किया गया है . शब्द "मुझे कोडिंग पसंद है!" वास्तव में 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

  1. माइक्रोसॉफ्ट एक्सेल में DAYS और DAYS360 फ़ंक्शन का उपयोग कैसे करें

    दिन माइक्रोसॉफ्ट एक्सेल में काम करता है दो तिथियों के बीच दिनों की संख्या देता है। DAYS (end_date, start_date) का फ़ॉर्मूला। DAYS360 फ़ंक्शन कुछ लेखांकन गणनाओं में उपयोग किए जाने वाले 360-दिन वर्ष (बारह 30-दिन के महीने) पर केंद्रित दो तिथियों के बीच दिनों की संख्या देता है। DAYS360 फ़ंक्शन का सूत्र

  1. कस्टम एक्सेल फंक्शंस कैसे बनाएं

    माइक्रोसॉफ्ट एक्सेल कई पूर्व-निर्धारित कार्यों के साथ आता है जो हमारे लिए अधिकतम काम करते हैं। अधिकांश मामलों में हमें उन अंतर्निहित कार्यों के अलावा किसी और फ़ंक्शन की आवश्यकता नहीं होती है। लेकिन, क्या होगा यदि आपको कुछ ऐसी कार्यक्षमता की आवश्यकता है जो किसी पूर्व-निर्धारित एक्सेल फ़ंक्शन द्वारा प

  1. लिनक्स पर एलियासेस और शेल फंक्शंस कैसे बनाएं?

    यदि आप जीएनयू/लिनक्स सिस्टम का अधिकाधिक लाभ उठाना चाहते हैं और कमांड लाइन पर जितना अधिक काम करते हैं, तो कमांड प्रॉम्प्ट और शेल स्क्रिप्ट को जानना अभी भी आवश्यक है, जितना अधिक उपयोग किया जा रहा है, उतना ही अधिक कमांड का उपयोग किया जा रहा है। उपलब्ध कमांड का छोटा सबसेट। अधिकांश कार्य आदतन हैं और उपयो