বাশ স্ক্রিপ্টে কাজ করতে পরামিতিগুলি কীভাবে পাস করবেন?


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এতে।
উইল্যান্ড

আমার উদাহরণটি মারাত্মকভাবে অসম্পূর্ণ ছিল, আমি এটি একটি গুচ্ছ আপডেট করেছি। এখন আফাইক এটি আর কাজ করবে না।
ব্যবহারকারী 181822

আপনার 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 ব্যবহার করেছি এবং প্রকৃতপক্ষে স্ক্রিপ্টটির নামটি resolved 0 সমাধান করেছে। আমি এটি স্ক্রিপ্টের প্যারামিটারের জন্য ভুল করেছিলাম এটি নিজেই ফাংশনটি নয়। ধন্যবাদ!
ব্যবহারকারী 181822

6

মূল স্ক্রিপ্টে $ 1, $ 2, আপনার ইতিমধ্যে জানা হিসাবে চলকগুলি উপস্থাপন করছে is সাবস্ক্রিপস বা ফাংশনগুলিতে, এই সাবস্ক্রিপ্টগুলির জন্য অভ্যন্তরীণ (স্থানীয়) ভেরিয়েবল হিসাবে $ 1 এবং $ 2 পরামিতিগুলিকে উপস্থাপন করবে the

#!/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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.