आप एक सीमा को निर्दिष्ट करने के लिए 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
आपके द्वारा उन्हें स्थानांतरित करने के बाद। आपकी स्क्रिप्ट में आप के$2
साथ उपयोग करते हैं$variable_in_question
, आपको या तो उसे बदलने या पैरामीटर विस्तार दृष्टिकोण का उपयोग करने की आवश्यकता होती है।