আমি এটি শেল স্ক্রিপ্টে দেখতে পাচ্ছি।
variable=${@:2}
এটা কি করছে?
var="my_value"; echo var="${var[@]:2}"; echo "$var"
পার্থক্যটা দেখ?
আমি এটি শেল স্ক্রিপ্টে দেখতে পাচ্ছি।
variable=${@:2}
এটা কি করছে?
var="my_value"; echo var="${var[@]:2}"; echo "$var"
পার্থক্যটা দেখ?
উত্তর:
এটি $@
বাশ- এ বিশেষ ভেরিয়েবলের বিষয়বস্তু প্রদর্শন করছে । এটিতে সমস্ত কমান্ড লাইন যুক্তি রয়েছে এবং এই কমান্ডটি দ্বিতীয়টি থেকে সমস্ত আর্গুমেন্ট নিয়েছে এবং এগুলিকে একটি ভেরিয়েবলের মধ্যে সংরক্ষণ করছে,variable
,।
এখানে একটি উপস্থাপনা স্ক্রিপ্ট।
#!/bin/bash
echo ${@:2}
variable=${@:3}
echo $variable
উদাহরণ রান:
./ex.bash 1 2 3 4 5
2 3 4 5
3 4 5
vars=( "${@:2}" )
$@
এবং ${@}
অভিন্ন, যদিও পরবর্তীটি "আরও সঠিক" বাক্য গঠন। আপনার সাথে বন্ধনী ব্যবহার করতে হবে ${@:2}
, কারণ $@:2
এটি দ্ব্যর্থক এবং তাই ব্যাখ্যা করা হবে ${@}:2
, যা একই জিনিস নয়।
এটি একটি ksh
বৈশিষ্ট্য bash
এবং এর সাম্প্রতিক সংস্করণগুলিতেও পাওয়া যায় zsh
।
ইন ksh
এবং bash
, আপনি ${array[@]:first:length}
সিনট্যাক্স ব্যবহার করে একটি অ্যারের বিভিন্ন উপাদান অ্যাক্সেস করতে পারেন যা অ্যারের উপাদানগুলি length
(বা সূচকগুলিতে সংখ্যায়িতভাবে সাজানো অ্যারের উপাদানগুলির তালিকায় length
) অবধি প্রসারিত হয়, যা array
দিয়ে শুরু হয় বৃহত্তর বা সমান সূচক সহ প্রথমটি first
। যখন স্কেলার প্রসঙ্গে (যেমন এখানে স্কেলার ভেরিয়েবলের একটি অ্যাসাইনমেন্টে রয়েছে) উপাদানগুলির সাথে স্থানের অক্ষরের সাথে bash
এবং ksh93
প্রথম অক্ষরের সাথে $IFS
(অথবা $IFS
খালি বা স্থানটি যদি সেট না করা থাকে তবে কিছু না) যুক্ত থাকেzsh
।
এই ক্ষেত্রে:
$ a[23]=a a[5]=b a[235]=c a[45]=d
$ x=${a[@]:12:2}; printf '<%s>\n' "$x"
<a d>
$@
একটি বিশেষ ক্ষেত্রে। $@
অবস্থানগত পরামিতি অ্যারে আছে ( $1
, $2
...)। কিন্তু যখন সাথে ব্যবহার :
, $0
এছাড়াও অন্তর্ভুক্ত করা হয়। সুতরাং ${@:1}
হিসাবে একই $@
, না ${@:0}
অন্য অ্যারে মত।
ইন zsh
, এটি কিছুটা আলাদা। zsh
যোগ ksh
সামঞ্জস্যের জন্য শুধুমাত্র সম্প্রতি সিনট্যাক্স কিন্তু উপাদানের রেঞ্জ নির্বাচনের জন্য নিজস্ব সিনট্যাক্স হয়েছে।
পক্ষান্তরে ksh
এবং bash
, zsh
অ্যারে স্কালে ভেরিয়েবল থেকে একটি আলাদা পরিবর্তনশীল ধরনের হয়, বিক্ষিপ্ত হয় না ( zsh
অন্য পরিবর্তনশীল টাইপ হিসাবে মিশুক অ্যারে আছে) এবং সূচক 1 পরিবর্তে 0 এ শুরু।
এর জন্য zsh
, আপনি অ্যারের উপাদান বিন্যাসগুলি অ্যাক্সেস করে $a[first,last]
(যেখানে last
শেষ থেকে পিছনে গুনতে নেতিবাচকও হতে পারে)।
ইন zsh
,
a[23]=a a[5]=b a[235]=c a[45]=d
235 টি উপাদান সহ একটি অ্যারে তৈরি করে, তাদের বেশিরভাগই খালি। $a[12,50]
12 থেকে 50 উপাদানগুলিতে প্রসারিত হবে এবং ${a[@]:12:2}
কেবল (খালি) $a[12]
এবং $a[13]
উপাদানগুলিতে প্রসারিত হবে । বিশেষ স্থান ধার্য, এবং আবার সঙ্গে বহনযোগ্যতা জন্য ksh93
এবং bash
, zsh
একটি গ্রহণ 0
জন্য প্রথম উপাদান $@
এবং যে যেমন একইরূপে $0
।
সুতরাং, আপনি সমস্ত 3 টি শেল জুড়ে ${a[@]:x:n}
এবং ${@:x:n}
বহনযোগ্যভাবে ব্যবহার করতে পারেন , তবে কেবল অকার্যকর অ্যারেগুলির জন্য এবং আইএফএসের মানের প্রতি মনোযোগ দিন।