আমি এটি শেল স্ক্রিপ্টে দেখতে পাচ্ছি।
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}বহনযোগ্যভাবে ব্যবহার করতে পারেন , তবে কেবল অকার্যকর অ্যারেগুলির জন্য এবং আইএফএসের মানের প্রতি মনোযোগ দিন।