আপনি একটি পরিসীমা নির্দিষ্ট করতে bashপ্যারামিটার সম্প্রসারণ ব্যবহার করতে পারেন , এটি অবস্থানগত পরামিতিগুলির সাথেও কাজ করে। এর জন্য $3... $nএটি হবে:
"${@:3}" # expands to "$3" "$4" "$5" …
"${*:3}" # expands to "$3 $4 $5 …"
উভয় সচেতন থাকুন $@এবং $*প্রথম যুক্তি উপেক্ষা করুন $0। আপনি যদি ভাবেন যে আপনার ক্ষেত্রে কোনটি ব্যবহার করবেন: আপনি সম্ভবত একটি উদ্ধৃতি চান এটি খুব সম্ভবত $@। $*আপনি সুস্পষ্টভাবে আর্গুমেন্টগুলি স্বতন্ত্রভাবে উদ্ধৃত হওয়া না চাইলে ব্যবহার করবেন না ।
আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করে দেখতে পারেন:
$ bash -c 'echo "${@:3}"' 0 1 2 3 4 5 6
3 4 5 6
$ echo 'echo "${@:3}"' >script_file
$ bash script_file 0 1 2 3 4 5 6
2 3 4 5 6
নোট করুন যে প্রথম উদাহরণে $0প্রথম যুক্তিতে পূর্ণ হয় 0যখন কোনও স্ক্রিপ্টে ব্যবহৃত $0হয় পরিবর্তে স্ক্রিপ্টের নামটি পূরণ করা হয়, যেমন দ্বিতীয় উদাহরণটি দেখায়। থেকে স্ক্রিপ্টের নাম bashঅবশ্যই হয় , প্রথম যুক্তি ঠিক যে এটা স্বাভাবিকভাবে যেমন অনুভূত না - একই যায় জন্য একটি স্ক্রিপ্ট এক্সিকিউটেবল তৈরি এবং "সরাসরি" বলা। সুতরাং প্রথম উদাহরণে আমাদের $0= 0, $1= 1ইত্যাদি রয়েছে যখন দ্বিতীয়টিতে এটি $0= script_file, $1= 0, $2= 1ইত্যাদি; ${@:3}শুরু করে প্রতিটি যুক্তি নির্বাচন করে $3।
সম্ভাব্য ব্যাপ্তির জন্য কিছু অতিরিক্ত উদাহরণ:
# two arguments starting with the third
$ bash -c 'echo "${@:3:2}"' 0 1 2 3 4 5 6
3 4
# every argument starting with the second to last one
# a negative value needs either a preceding space or parentheses
$ bash -c 'echo "${@: -2}"' 0 1 2 3 4 5 6
5 6
# two arguments starting with the fifth to last one
$ bash -c 'echo "${@:(-5):2}"' 0 1 2 3 4 5 6
2 3
আরও পড়া:
shiftপদ্ধতির অ্যাক্সেস করা অসম্ভব হয়ে যাবে$1এবং$2আপনি তাদের স্থানান্তরিত করার পরে after আপনার স্ক্রিপ্টে আপনি$2পাশাপাশি ব্যবহার করেন$variable_in_question, আপনাকে এটি পরিবর্তন করতে হবে বা প্যারামিটার এক্সপেনশন পদ্ধতির ব্যবহার করতে হবে।