Saya memiliki array yang mengandung beberapa elemen, tetapi saya ingin mendorong item baru ke awal array; Bagaimana aku melakukan itu?
bash
shell-script
array
Gaurav KS
sumber
sumber
ARRAY+=('foo')
Jawaban:
Untuk menambahkan elemen ke awal penggunaan array.
Secara umum, Anda akan melakukannya.
Untuk menambahkan elemen ke akhir penggunaan array.
Atau sebaliknya
Secara umum, Anda akan melakukannya.
Untuk menambahkan elemen ke indeks spesifik penggunaan array.
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] , ....
Menghapus elemen dari array
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[@]: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)Gunakan ganti pola jika Anda tahu nilai elemen Anda.
sumber
arr+=(element)
danunset arr[2]
(yang seharusnyaunset -v 'arr[2]'
!), Yang mengasumsikan array non-sparse. Perhatikan juga bahwaarr=( "${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.akan membuat
$a
array baru dengannewvalue
as${a[0]}
dan elemen-elemen dari array asli ditambahkan dalam urutan numerik kunci mereka dengan tombol 1, 2 ...Misalnya, jika Anda memiliki:
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:Kerang seperti
zsh
atauyash
yang memiliki susunan normal memiliki operator untuk itu:zsh
:(juga berfungsi untuk menambahkan string ke variabel skalar)
yash
:sumber
sumber