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 $a
array baru dengan newvalue
as ${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 newvalue
as ${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 zsh
atau yash
yang 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')