সাবস্ক্রিপ্টে প্যারামিটারগুলি পাস করার জন্য আপনি "$ @" (উদ্ধৃত ডলার) ব্যবহার করতে চান। তাই ভালো ....
ls-color.sh:
#!/bin/bash
/bin/ls --color=auto "$@"
কেন.....
থেকে ব্যাশ man পৃষ্ঠা :
$*- এক থেকে শুরু করে অবস্থানগত পরামিতিগুলিতে প্রসারিত হয়। ডাবল উদ্ধৃতিগুলির মধ্যে যখন প্রসারণ ঘটে তখন এটি আইএফএস বিশেষ ভেরিয়েবলের প্রথম অক্ষর দ্বারা পৃথক পৃথক প্রতিটি প্যারামিটারের মান সহ একটি শব্দে প্রসারিত হয়। যে, "$*"সমতুল্য
"$1c$2c..." , যেখানে সি আইএফএস ভেরিয়েবলের মানটির প্রথম অক্ষর। যদি আইএফএস সেট না করা থাকে তবে পরামিতিগুলি স্পেস দ্বারা পৃথক করা হয়। যদি আইএফএস নাল হয় তবে পরামিতিগুলি বিভক্তকারীদের বিরতি ছাড়াই যুক্ত করা হবে।
$@- এক থেকে শুরু করে অবস্থানগত পরামিতিগুলিতে প্রসারিত হয়। ডাবল উদ্ধৃতিতে যখন প্রসারণ ঘটে তখন প্রতিটি প্যারামিটার পৃথক শব্দের দিকে প্রসারিত হয়। এটি হ'ল "$@"সমান, "$1" "$2" ...যদি কোনও শব্দের মধ্যে দ্বিগুণ-উদ্ধৃত সম্প্রসারণ ঘটে তবে প্রথম প্যারামিটারের প্রসারটি মূল শব্দের প্রারম্ভিক অংশের সাথে যুক্ত হয় এবং শেষ প্যারামিটারের প্রসারণটি মূলটির শেষ অংশের সাথে যুক্ত হয় শব্দ। যখন কোনও অবস্থানগত পরামিতি থাকে না
"$@"এবং $@কিছুইতে প্রসারিত হয় না (যেমন, সেগুলি সরানো হয়)।
কিছু ডেমো স্ক্রিপ্ট সেট আপ করা হচ্ছে ...
echo 'echo -e "\$1=$1\n\$2=$2\n\$3=$3\n\$4=$4"' > echo-params.sh
echo './echo-params.sh $*' > dollar-star.sh
echo './echo-params.sh $@' > dollar-at.sh
echo './echo-params.sh "$*"' > quoted-dollar-star.sh
echo './echo-params.sh "$@"' > quoted-dollar-at.sh
chmod +x *.sh
"$@"- উদ্ধৃত-ডলার-এটি একটি সাব-শেলের কাছে পুনর্গঠনকারী আরোগুলির জন্য একটি পরিচয় রূপান্তর (সময়ের ~ 99%, আপনি যা বোঝাতে চেয়েছিলেন এটি):
./quoted-dollar-at.sh aaa '' "'cc cc'" '"ddd ddd"'
"$*"- উদ্ধৃত-ডলার- স্টারটি একটি একক স্ট্রিংয়ের মধ্যে অর্গগুলি ছিঁড়ে ফেলেছে (আপনি আসলে এই আচরণটি চান এমন সময়কালের 1% eg যেমন: শর্তাধীন if [[ -z "$*" ]]; then ...:):
./quoted-dollar-star.sh aaa '' "'cc cc'" '"ddd ddd"'
$*/ $@- উদ্ধৃতি ব্যতীত, উভয় ফর্ম কোটেশন এক স্তর থেকে বিচ্ছিন্ন এবং অন্তর্নিহিত স্ট্রিং থেকে ফাঁকা স্থান ব্যাখ্যা কিন্তু উদ্ধৃতি অক্ষর উপেক্ষা (প্রায় সর্বদা, এটি একটি ভুল):
./dollar-star.sh aaa '' "'cc cc'" '"ddd ddd"'
./dollar-at.sh aaa '' "'cc cc'" '"ddd ddd"'
আপনি যদি কিছু মজা করতে চান তবে আপনি "$ @" ব্যবহারের জন্য আপনার পছন্দ মতো গভীর নীড়গুলিতে, পছন্দ করতে চাইলে উপাদানগুলি স্ট্যাকের বাইরে ধাক্কা মেরে এবং পপিং করতে পারেন।
function identity() {
"$@"
}
set -x
identity identity identity identity identity echo Hello \"World\"