উত্তর:
shift
যুক্তিগুলি "খাওয়ার" জন্য অন্তর্নির্মিত কমান্ডটি ব্যবহার করুন । তারপরে শিশু প্রক্রিয়াটিকে কল করুন এবং "$@"
সমস্ত বাকী যুক্তি অন্তর্ভুক্ত করার জন্য এটি আর্গুমেন্টটি পাস করুন । উদ্ধৃতিগুলি লক্ষ্য করুন, সেগুলি রাখা উচিত, যেহেতু তারা যুক্তির তালিকার প্রসারকে যথাযথভাবে উদ্ধৃত করেছে।
$@
মূলত অ্যারের প্রতিটি উপাদানকে উদ্ধৃত স্ট্রিং হিসাবে গণ্য করে - এগুলি সম্প্রসারণের সুযোগ ছাড়াই পাশ করা হয়। এটিও নিশ্চিত করে যে প্রত্যেককে আলাদা শব্দ হিসাবে দেখা যায়। : একটি পরীক্ষা স্ক্রিপ্ট পার্থক্য প্রদর্শক সহ এই ব্যাখ্যাটি এখানে tldp.org/LDP/abs/html/internalvariables.html#APPREF
বাশ শিফট কমান্ডটি ব্যবহার করে :
উদাহরণস্বরূপ: শিফটেস্ট.শ:
#!/bin/bash
echo $1
shift
echo $1 $2
shifttest.sh 1 2 3 উত্পাদন করে
1
2 3
$1
উদ্ধৃত না করে ফরোয়ার্ড করেন "$1"
, তবে শেলটি শব্দ বিভাজন সম্পাদন করবে, উদাহরণস্বরূপ এবং পৃথকভাবে foo bar
ফরওয়ার্ড করা হবে । foo
bar
বাশ সাবসেটিং প্যারামিটারগুলি সমর্থন করে ( সাবসেট এবং সাবস্ট্রিংগুলি দেখুন ), যাতে আপনি কোন প্যারামিটারগুলি প্রক্রিয়া করতে / পাস করতে চান তা চয়ন করতে পারেন।
নতুন ফাইল খুলুন এবং এটি সম্পাদনা করুন: vim r.sh
:
echo "params only 2 : ${@:2:1}"
echo "params 2 and 3 : ${@:2:2}"
echo "params all from 2: ${@:2:99}"
echo "params all from 2: ${@:2}"
চালাও এটা:
$ chmod u+x r.sh
$ ./r.sh 1 2 3 4 5 6 7 8 9 10
ফলাফল হলো:
params only 2 : 2
params 2 and 3 : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10
params all from 2: 2 3 4 5 6 7 8 9 10