$array[] = 'foo';
বাশ বনামে পিএইচপি করার মতো কিছু করার উপায় আছে কি :
array[0]='foo'
array[1]='bar'
$array[] = 'foo';
বাশ বনামে পিএইচপি করার মতো কিছু করার উপায় আছে কি :
array[0]='foo'
array[1]='bar'
উত্তর:
হ্যা এখানে:
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
যে ক্ষেত্রে একটি অ্যাসাইনমেন্ট স্টেটমেন্ট শেল ভেরিয়েবল বা অ্যারে সূচক (অ্যারেগুলি দেখুন) এর জন্য একটি মান নির্ধারণ করে সেখানে, '+ =' অপারেটরটি ভেরিয়েবলের আগের মানটিতে সংযোজন বা যুক্ত করতে ব্যবহৃত হতে পারে।
ARRAY
আসল পরিবর্তনশীল নামের জন্য কেবলমাত্র একটি স্থানধারক। এমনকি যদি আপনার অ্যারে সূচকগুলি ক্রমানুসারে না+=
হয় তবে
${myarray[@]}
- অ্যারে ভেরিয়েবলটি উল্লেখ করা যেমন এটি স্কেলারের মতো হয় তবে তার উপাদান 0 অ্যাক্সেস করার সমান; অন্য কথায়: $myarray
হিসাবে একই ${myarray[0]}
।
বোবা গাই যেমন উল্লেখ করেছেন, অ্যারেটি শূন্য থেকে শুরু হয় এবং ক্রমিক হয় কিনা তা লক্ষ করা গুরুত্বপূর্ণ। যেহেতু আপনি অ্যাসিটিং করতে পারেন এবং অ-সূচক সূচকগুলি আনসেট করতে পারেন ${#array[@]}
অ্যারের শেষে সর্বদা পরবর্তী আইটেম হয় না।
$ array=(a b c d e f g h)
$ array[42]="i"
$ unset array[2]
$ unset array[3]
$ declare -p array # dump the array so we can see what it contains
declare -a array='([0]="a" [1]="b" [4]="e" [5]="f" [6]="g" [7]="h" [42]="i")'
$ echo ${#array[@]}
7
$ echo ${array[${#array[@]}]}
h
শেষ সূচকটি কীভাবে পাবেন তা এখানে:
$ end=(${!array[@]}) # put all the indices in an array
$ end=${end[@]: -1} # get the last one
$ echo $end
42
এটি ব্যাখ্যা করে যে কীভাবে অ্যারের শেষ উপাদানটি পাওয়া যায়। আপনি প্রায়শই এটি দেখতে পাবেন:
$ echo ${array[${#array[@]} - 1]}
g
আপনি দেখতে পাচ্ছেন, যেহেতু আমরা একটি বিচ্ছিন্ন অ্যারে নিয়ে কাজ করছি, এটি শেষ উপাদান নয়। এটি দুষ্প্রাপ্য এবং সংমিশ্রিত উভয় অ্যারেতে কাজ করে, যদিও:
$ echo ${array[@]: -1}
i
${array[@]: start[:count]}
ফেরত গণনা এলেমস। বা, যদি নির্দিষ্ট না করা হয়, বাকি সমস্ত এলিম। নিম্নলিখিত এলেমে শুরু: .: যদি শুরু হয় = 0: এলিমে থেকে। যার সূচক> = শুরু। - যদি শুরু হয় <0: এলিমে থেকে। যার সূচক (সর্বশেষ অ্যারে সূচক + 1) - অ্যাবস (শুরু); ক্যাভেট: যদি এ্যাবস (শুরু)> (সর্বশেষ অ্যারে সূচক + 1), একটি নাল স্ট্রিং ফিরে আসে। যদি গণনা নির্দিষ্ট করা থাকে তবে যতগুলি উপাদানগুলি সূচকগুলি শুরু থেকে সামঞ্জস্য না করা হয় ততই ফিরে আসে।
${array[-1]}
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
arr=("${arr[@]}" "new")
আপনার যদি তাদের ফাঁকা জায়গার সাথে উপাদান থাকে তবে ব্যবহার করুন
যদি আপনার অ্যারে সর্বদা ক্রমযুক্ত হয় এবং 0 থেকে শুরু হয় তবে আপনি এটি করতে পারেন:
array[${#array[@]}]='foo'
# gets the length of the array
${#array_name[@]}
যদি আপনি অজান্তে সমান চিহ্নের মধ্যে ফাঁকা স্থান ব্যবহার করেন:
array[${#array[@]}] = 'foo'
তারপরে আপনি এর মতো একটি ত্রুটি পাবেন:
array_name[3]: command not found
+=
বাক্য গঠনটি (@ ই-টি 172 এর উত্তর দেখুন) হ'ল (ক) সহজ, এবং (খ)
+=
$arr += ($el)
মনে হয় স্ট্রিংটিকে স্পেস দিয়ে বিভক্ত করে প্রতিটি উপাদান যুক্ত করে।
ইনডেক্সেড অ্যারে দিয়ে আপনি এর মতো কিছু করতে পারেন:
declare -a a=()
a+=('foo' 'bar')