বাশ স্ক্রিপ্ট ফাংশন প্যারামিটার হিসাবে $ @ এর অর্থ কী


16

$@বাশ স্ক্রিপ্ট ফাংশন প্যারামিটার হিসাবে কী বোঝায়?

উদাহরণ:

function foo()
{
    echo "$@" 1>&2;
}

উত্তর:


20

$@সকল প্যারামিটার পরিবর্তনশীল বিস্তৃতি সময় ব্যবহৃত ফাংশন কলিং, তাই

function foo()
{
    echo "$@"
}

foo 1 2 3

প্রদর্শিত হবে 1 2 3। যদি কোনও ফাংশনের ভিতরে ব্যবহার না করা হয়, এটি স্ক্রিপ্ট কল করার সময় ব্যবহৃত সমস্ত পরামিতি নির্দিষ্ট করে। দেখুন ব্যাশ ম্যানুয়েল পৃষ্ঠা আরও তথ্যের জন্য।


11

ash @ বাশের দুটি "অবস্থানগত পরামিতি" সমালোচনাগুলির মধ্যে একটি, অন্যটি $ *।

উভয়ই, $ @ এবং $ * একটি অভ্যন্তরীণ ব্যাশ ভেরিয়েবল যা কোনও কী পার্থক্য সহ কোনও ফাংশন বা স্ক্রিপ্টে পাস হওয়া সমস্ত পরামিতি উপস্থাপন করে , $ @ এর প্রতিটি পরামিতি আলাদা আলাদা উদ্ধৃত স্ট্রিং হিসাবে রয়েছে, যেখানে $ * এর একক স্ট্রিং হিসাবে সমস্ত পরামিতি রয়েছে । এই পার্থক্যটি নিম্নলিখিত কোডটিতে দেখানো হয়েছে:

foo() {
  while [ "$1" != "" ]; do
      echo $1
    shift
  done
}

dollar_at () {
    foo "$@"
}

dollar_star () {
    foo "$*"
}

echo "Using \$@"
dollar_at a b c

echo "Using \$*"
dollar_star a b c

আউটপুট:

Using $@
a
b
c
Using $*
a b c

দ্রষ্টব্য, যখন $ * দিয়ে ডাকা হয় ঠিক তখনই একটি যুক্তি foo () এ পাস করা হয় তবে $ @ দিয়ে তিনটি আর্গুমেন্ট foo () এ প্রেরণ করা হয়।

আরও তথ্য: http://tldp.org/LDP/abs/html/internvariables.html#APPREF


0

আমি আশা করি এর অর্থ সমস্ত ইনপুট পরামিতি হ্যাশ হিসাবে নেওয়া। সুতরাং যদি 3 টি ইনপুট প্যারামিটার থাকে তবে তারা ফাংশনটির মধ্যে $ 1, $ 2, $ 3 আকারে উপলব্ধ হবে


2
না, এটি একটি অভ্যন্তরীণ পরিবর্তনশীল যার অর্থ কোনও ফাংশনে দেওয়া সমস্ত পরামিতি। এগুলি যেমন $1, $2যাইহোক, যেমন উপলভ্য $@
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.