Jawaban:
arr=("new_element" "${arr[@]}")
Secara umum, Anda akan melakukannya.
arr=("new_element1" "new_element2" "..." "new_elementN" "${arr[@]}")
arr=( "${arr[@]}" "new_element" )
Atau sebaliknya
arr+=( "new_element" )
Secara umum, Anda akan melakukannya.
arr=( "${arr[@]}" "new_element1" "new_element2" "..." "new_elementN") #Or
arr+=( "new_element1" "new_element2" "..." "new_elementN" )
Katakanlah kita ingin menambahkan elemen ke posisi Index2 arr [2] , kita sebenarnya akan melakukan penggabungan pada sub-array di bawah ini:
Dapatkan semua elemen dengan Indeks posisi2 ke arr terakhir [2] , arr [3] , ....
arr=( "${arr[@]:0:2}" "new_element" "${arr[@]:2}" )Selain menghapus elemen dari array (misalkan elemen # 2), kita perlu menggabungkan dua sub-array. Sub-array pertama akan menahan elemen sebelum elemen # 2 dan sub-array kedua akan berisi elemen setelah elemen # 2.
arr=( "${arr[@]:0:2}" "${arr[@]:3}" )
${arr[@]:0:2}akan mendapatkan dua elemen arr [0] dan arr [1] dimulai dari awal array.${arr[@]:3}akan mendapatkan semua elemen dari index3 arr [3] hingga yang terakhir.Kemungkinan lain untuk menghapus elemen adalah
Menggunakan unset(sebenarnya menetapkan nilai 'null' ke elemen)
unset arr[2]Gunakan ganti pola jika Anda tahu nilai elemen Anda.
arr=( "${arr[@]/PATTERN/}" )arr+=(element)dan unset arr[2](yang seharusnya unset -v 'arr[2]'!), Yang mengasumsikan array non-sparse. Perhatikan juga bahwa arr=( "${arr[@]/PATTERN/}" )tidak mengubah jumlah elemen. Yang bisa dilakukan hanyalah menggantinya dengan string kosong.
Perhatikan bahwa array dalam bash(disalin dari ksh) adalah array yang lebih asosiatif.
a=(newvalue "$a[@]")
akan membuat $aarray baru dengan newvalueas ${a[0]}dan elemen-elemen dari array asli ditambahkan dalam urutan numerik kunci mereka dengan tombol 1, 2 ...
Misalnya, jika Anda memiliki:
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")
Itu menjelaskan mengapa tidak ada operator builtin untuk itu.
Jika Anda ingin menyisipkan newvalueas ${a[0]}dan menggeser semua kunci lainnya dengan satu, Anda memerlukan larik sementara:
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
Kerang seperti zshatau yashyang memiliki susunan normal memiliki operator untuk itu:
zsh:
a[1,0]=newvalue
(juga berfungsi untuk menambahkan string ke variabel skalar)
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')