উত্তর:
$@
সকল প্যারামিটার পরিবর্তনশীল বিস্তৃতি সময় ব্যবহৃত ফাংশন কলিং, তাই
function foo()
{
echo "$@"
}
foo 1 2 3
প্রদর্শিত হবে 1 2 3
। যদি কোনও ফাংশনের ভিতরে ব্যবহার না করা হয়, এটি স্ক্রিপ্ট কল করার সময় ব্যবহৃত সমস্ত পরামিতি নির্দিষ্ট করে। দেখুন ব্যাশ ম্যানুয়েল পৃষ্ঠা আরও তথ্যের জন্য।
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
$1
,$2
যাইহোক, যেমন উপলভ্য$@
।