আমার কাছে কিছু উপাদান রয়েছে এমন অ্যারে রয়েছে, তবে আমি অ্যারের শুরুতে নতুন আইটেমগুলি ধাক্কা দিতে চাই; আমি কেমন করে ঐটি করি?
আমার কাছে কিছু উপাদান রয়েছে এমন অ্যারে রয়েছে, তবে আমি অ্যারের শুরুতে নতুন আইটেমগুলি ধাক্কা দিতে চাই; আমি কেমন করে ঐটি করি?
উত্তর:
arr=("new_element" "${arr[@]}")
সাধারণত, আপনি করবেন।
arr=("new_element1" "new_element2" "..." "new_elementN" "${arr[@]}")
arr=( "${arr[@]}" "new_element" )
বা পরিবর্তে
arr+=( "new_element" )
সাধারণত, আপনি করবেন।
arr=( "${arr[@]}" "new_element1" "new_element2" "..." "new_elementN") #Or
arr+=( "new_element1" "new_element2" "..." "new_elementN" )
ধরা যাক আমরা সূচি 2 অ্যারের অবস্থানে একটি উপাদান যুক্ত করতে চাই [2] , আমরা আসলে উপ-অ্যারের নীচে একত্রীকরণ করব:
সূচি পজিশনের সাথে সমস্ত উপাদানগুলি শেষ অ্যারে [2] , আর [3] , .... এ পান
arr=( "${arr[@]:0:2}" "new_element" "${arr[@]:2}" )
অ্যারে থেকে একটি উপাদান অপসারণ ছাড়াও (আসুন উপাদান # 2 বলুন), আমাদের দুটি উপ-অ্যারে সংযুক্ত করতে হবে। প্রথম সাব-অ্যারে উপাদান # 2 এর আগে উপাদানগুলি ধরে রাখবে এবং দ্বিতীয় উপ-অ্যারেতে উপাদান # 2 পরে উপাদান থাকবে।
arr=( "${arr[@]:0:2}" "${arr[@]:3}" )
${arr[@]:0:2}
দুটি উপাদান অ্যারে [0] এবং অ্যারে [1] অ্যারের শুরু থেকে শুরু করবে।${arr[@]:3}
সূচক 3 টি থেকে [3] থেকে শেষ পর্যন্ত সমস্ত উপাদান পাবেন ।একটি উপাদান অপসারণ করার আরেকটি সম্ভাবনা হ'ল
ব্যবহার করে unset
(আসলে উপাদানটিকে 'নাল' মান নির্ধারণ করুন)
unset arr[2]
প্রতিস্থাপনের প্যাটার্নটি ব্যবহার করুন যদি আপনি নিজের উপাদানগুলির মান জানেন।
arr=( "${arr[@]/PATTERN/}" )
arr+=(element)
এবং unset arr[2]
(যা হওয়া উচিত unset -v 'arr[2]'
!) ব্যতীত, অপ্রয়োজনীয় অ্যারেগুলি ধরে নেয়। এছাড়াও লক্ষ করুন যে arr=( "${arr[@]/PATTERN/}" )
উপাদানগুলির সংখ্যা পরিবর্তন করে না। এটি যা করতে পারে তা হ'ল খালি স্ট্রিং দিয়ে তাদের প্রতিস্থাপন করা।
দ্রষ্টব্য যে অ্যারে bash
(ksh থেকে অনুলিপি করা) বরং সাহসী অ্যারে হয়।
a=(newvalue "$a[@]")
আসল অ্যারের উপাদানগুলি কীগুলির 1, 2 দিয়ে তাদের কীগুলির সংখ্যাগত ক্রমে সংযুক্ত করা হবে এবং এর $a
সাথে একটি নতুন অ্যারে তৈরি করবে ...newvalue
${a[0]}
উদাহরণস্বরূপ, যদি আপনি:
bash-4.4$ typeset -p a
declare -a a=([0]="foo" [12]="bar")
bash-4.4$ a=(newvalue "${a[@]}")
bash-4.4$ typeset -p a
declare -a a=([0]="newvalue" [1]="foo" [2]="bar")
এটি ব্যাখ্যা করে যে কেন এর জন্য কোনও বিল্টিন অপারেটর নেই।
আপনি সন্নিবেশ করতে চেয়েছিলেন newvalue
হিসাবে ${a[0]}
এবং এক দ্বারা সব অন্যান্য shift কীগুলি, আপনি একটি অস্থায়ী অ্যারে প্রয়োজন চাই:
b=newvalue
for k in "${!a[@]}"; do
b[k+1]=${a[k]}
done
unset a
for k in "${!b[@]}"; do
a[k]=${b[k]}
done
unset b
সাধারণ অ্যারে zsh
বা পছন্দ মতো শেলগুলির yash
জন্য অপারেটর রয়েছে:
zsh
:
a[1,0]=newvalue
(স্কেলার ভেরিয়েবলগুলিতে স্ট্রিং প্রেন্টিংয়ের জন্যও কাজ করে)
yash
:
array -i a 0 newvalue
# array declaration
arr=()
#Function to read data from file a and add into array
fun_add_in_array()
{
input=$1
while IFS=',' read -r f1 f2
do
echo "Element1 : $f1"
echo "Element2 : $f2"
arr+=( "$f1" )
done < "$input"
}
#Function to print a array
fun_read_array()
{
arr=("$@")
for i in "${arr[@]}"
do
echo $i
done
}
ARRAY+=('foo')