আপনি একটি পরিসীমা নির্দিষ্ট করতে 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
, আপনাকে এটি পরিবর্তন করতে হবে বা প্যারামিটার এক্সপেনশন পদ্ধতির ব্যবহার করতে হবে।