बैश स्क्रिप्ट में कार्य करने के लिए पैरामीटर कैसे पारित करें?


14

मैं एक फ़ंक्शन लिखना चाहता हूं जिसे मैं स्क्रिप्ट से कई अलग-अलग चर कह सकता हूं। कुछ कारणों से मुझे ऐसा करने में बहुत परेशानी हो रही है। मैंने जो उदाहरण पढ़ा है, वह हमेशा एक वैश्विक चर का उपयोग करता है, लेकिन जहाँ तक मैं देख सकता हूं, मेरा कोड अधिक पठनीय नहीं होगा।

इरादा उपयोग उदाहरण:

#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4

add(){
result=$para1 + $para2
}

add $var1 $var2
add $var3 $var4
# end of the script

./myscript.sh 1 2 3 4

मैंने $1फंक्शन में इस्तेमाल करने और इस तरह की कोशिश की , लेकिन तब यह वैश्विक रूप लेती है कि पूरी स्क्रिप्ट को कहा जाता था। मूल रूप से जो मैं देख रहा हूं वह कुछ ऐसा है $1, $2और इसी तरह लेकिन एक फ़ंक्शन के स्थानीय संदर्भ में। जैसा कि आप जानते हैं, फ़ंक्शन किसी भी उचित भाषा में काम करते हैं।


अपने उदाहरण में $ 1 और $ 2 का उपयोग करके फ़ंक्शन "वर्क्स" जोड़ें। कोशिश करो echo $1और echo $2इसमें।
विआलैंड

मेरा उदाहरण बुरी तरह से अपूर्ण था, मैंने इसे एक गुच्छा अपडेट किया। अब यह अब और काम नहीं करेगा।
user181822

अपने result = साथ बदलें और इसके बाद result=$(($1 + $2))जोड़ें echo $resultऔर यह सही ढंग से काम करता है, $ 1 और $ 2 आपके कार्य तर्क हैं।
विआलैंड

जवाबों:


18

तर्कों के साथ एक फ़ंक्शन को कॉल करने के लिए:

function_name "$arg1" "$arg2"

फ़ंक्शन उनकी स्थिति (नाम से नहीं) द्वारा पारित तर्कों को संदर्भित करता है, जो कि $ 1, $ 2, और आगे है। $ 0 स्क्रिप्ट का नाम है।

उदाहरण:

#!/bin/bash

add() {
    result=$(($1 + $2))
    echo "Result is: $result"
}

add 1 2

उत्पादन

./script.sh
 Result is: 3

2
मुझे अब अपनी गलती का एहसास है। मैंने फ़ंक्शन में $ 0 और $ 1 का उपयोग किया था और $ 0 ने स्क्रिप्ट नाम वास्तव में हल किया था। मैंने इसे स्क्रिप्ट के एक पैरामीटर के लिए गलत समझा, न कि फ़ंक्शन के लिए। धन्यवाद!
user181822

6

मुख्य स्क्रिप्ट में $ 1, $ 2, चर का प्रतिनिधित्व कर रहा है जैसा कि आप पहले से ही जानते हैं। सदस्यता या फ़ंक्शंस में, $ 1 और $ 2 मापदंडों का प्रतिनिधित्व करेगा, इस सदस्यता के लिए आंतरिक (स्थानीय) चर के रूप में फ़ंक्शंस को पारित किया जाएगा।

#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4

add(){
  #Note the $1 and $2 variables here are not the same of the
  #main script... 
  echo "The first argument to this function is $1"
  echo "The second argument to this function is $2"
  result=$(($1+$2))
  echo $result

}

add $var1 $var2
add $var3 $var4
# end of the script


./myscript.sh 1 2 3 4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.