Ini adalah artikel kedua sebagai bagian dari bash array. Pada artikel sebelumnya, kita telah membahas cara bekerja dengan Array terindeks di Bash . Dalam panduan ini, kita akan membahas tentang Bash Associative Array secara rinci dengan contoh di Linux.
Array asosiatif bekerja berdasarkan pasangan nilai kunci. Dalam beberapa bahasa, ini juga disebut kamus atau peta hash . Perbedaan utama antara Array Terindeks dan Array Asosiatif adalah, Array terindeks bekerja berdasarkan nilai indeks, dan setiap elemen dalam array dipetakan ke posisi indeks tertentu dari array. Array asosiatif menggunakan "kunci" untuk memetakan nilai alih-alih posisi indeks.
Mari selami dan lihat cara menggunakan array asosiatif di bash.
Inisialisasi array asosiatif
Tidak seperti larik terindeks, Anda tidak dapat menginisialisasi larik asosiatif tanpa menggunakan declare
memerintah.
Gunakan declare
perintah dengan -A
bendera.
$ declare -A STAR_PLAYERS=()
Sekarang array kosong bernama "STAR_PLAYERS" dibuat. Jika diinginkan, Anda juga dapat menambahkan elemen ke array secara langsung selama inisialisasi.
$ declare -A STAR_PLAYERS=( [Argentina]="Messi" [Brazil]="Neymar" [England]="Kane" )
Dalam kode di atas, kunci berada dalam tanda kurung siku dan nilainya harus diikuti dengan tanda sama dengan tanpa spasi. Tidak perlu menggunakan koma atau titik koma sebagai pemisah antar elemen.
Untuk keterbacaan yang lebih baik, Anda dapat menulis elemen array melalui beberapa baris.
$ declare -A STAR_PLAYERS=( [Argentina]="Messi" [Brazil]="Neymar" [England]="Rooney" )
Melihat elemen larik
Anda harus menggunakan echo
atau printf
perintah di bash untuk mencetak isi array. Mirip dengan bagaimana kami menggunakan variabel khusus *
dan @
untuk mencetak array Terindeks, hal yang sama juga harus digunakan untuk mencetak array asosiatif.
$ echo ${STAR_PLAYERS[@]}
$ echo ${STAR_PLAYERS[*]}
Ada perbedaan yang signifikan antara *
dan @
dan untuk mengetahui perbedaan antara *
dan @
dan cara kerjanya dengan larik, lihat bagian "Mengulangi elemen larik" di Bash For Loop kami panduan.
Jika Anda mencoba mencetak elemen array tanpa menggunakan *
atau @
, output akan kosong.
$ echo ${STAR_PLAYERS}
Juga jika Anda melihat output di atas, hanya nilai yang dicetak dan bukan kuncinya. Nilai yang Anda cetak tidak akan diurutkan. Anda dapat mengambil nilai elemen tertentu menggunakan kuncinya.
$ echo ${STAR_PLAYERS[Brazil]}
Tambahkan elemen baru ke array
Menambahkan elemen baru ke array itu sederhana. Yang harus Anda lakukan adalah membuat pasangan nilai kunci baru seperti yang ditunjukkan di bawah ini.
$ STAR_PLAYERS[Belgium]="Hazard"
$ echo ${STAR_PLAYERS[@]}
Jika Anda mencoba menggunakan kunci yang sama yang sudah ada dalam larik, nilainya akan diganti dengan yang baru.
$ STAR_PLAYERS[England]="Sterling"
$ echo ${STAR_PLAYERS[@]}
Menambahkan elemen baru ke array
Anda juga dapat menambahkan elemen ke array menggunakan sintaks berikut.
$ STAR_PLAYERS+=([Spain]="Ramos")
$ echo ${STAR_PLAYERS[@]}
Cetak kunci dan pasangan nilai
Dari contoh sebelumnya, Anda mungkin telah memahami bahwa hanya nilai yang dicetak. Anda bisa mendapatkan daftar kunci sendiri dengan mengawali "!"
simbol dengan larik.
$ echo ${!STAR_PLAYERS[@]}
Jika Anda ingin mencetak kunci dan nilai secara bersamaan, Anda dapat menggunakan for loop
.
for elem in "${!STAR_PLAYERS[@]}" do echo "key : ${elem}" -- "value: ${STAR_PLAYERS[${elem}]}" done
Panjang array asosiatif
Anda bisa mendapatkan panjang array asosiatif yaitu jumlah total elemen yang ada dalam array dengan mengawali "#"
simbol dengan array. Ini juga umum untuk array yang diindeks.
$ echo ${#STAR_PLAYERS[@]}
Periksa apakah ada elemen dalam array
Terkadang sebelum melakukan pemrosesan apa pun dengan elemen tertentu, Anda mungkin ingin memeriksa apakah elemen tersebut sudah ada dalam array. Ada banyak cara untuk melakukannya, tetapi di bawah ini adalah cara paling sederhana.
Saya menggunakan pernyataan bersyarat dengan -n
flag yang akan memeriksa apakah panjang string dikembalikan dari ${STAR_PLAYERS[Argentina]}
bukan nol. Ini memperluas kunci yang diberikan dan nilainya benar-benar diperiksa terhadap -n
bendera.
if [[ -n "${STAR_PLAYERS[Argentina]}" ]] then echo "Element is present" else echo "Element not present" fi
Hanya baca array asosiatif
Anda dapat membuat array asosiatif hanya-baca. Dalam status read-only, setelah array diinisialisasi, Anda tidak dapat menambahkan elemen baru ke array atau mengubah nilai apa pun di dalam array. Bersamaan dengan declare
perintah Anda harus menggunakan -r
bendera.
$ declare -r -A STAR_PLAYERS=( [Argentina]="Messi" [Brazil]="Neymar" [England]="Rooney" )
$ STAR_PLAYERS[Spain]="Ramos"
$ STAR_PLAYERS[England]="Sterling"
$ echo ${STAR_PLAYERS[@]}
Hapus elemen
Jika Anda ingin menghapus elemen tertentu dari array, Anda dapat menggunakan unset
perintah dengan nama kunci elemen. Misalnya, jika saya ingin menghapus elemen (Spain="Ramos"
), maka sintaksnya harus sebagai berikut.
$ unset STAR_PLAYERS[Spain]
Mengosongkan array
Anda juga dapat menghapus semua elemen dari array dan mengosongkannya dengan menginisialisasi ulang array seperti yang ditunjukkan di bawah ini.
$ echo ${STAR_PLAYERS[@]}
$ declare -A STAR_PLAYERS=()
Hapus susunan
Jika Anda ingin menghapus array, Anda dapat menggunakan nama array tanpa kunci apa pun.
$ unset STAR_PLAYERS
Kesimpulan
Pada artikel ini, kita telah melihat apa itu array asosiatif di bash dan beberapa fungsinya. Kelemahan dengan bash adalah Anda harus menulis beberapa logika secara manual atau menggunakan alat eksternal untuk mencapai hasil yang diinginkan. Misalnya, ketika saya harus mengubah array asosiatif menjadi objek json, maka saya harus menggunakan jq alat yang tidak ada di dalam bash. Di sinilah Anda harus mencoba menggunakan Python yang menawarkan metode yang mudah digunakan ketika Anda harus bekerja dengan array dan struktur data lainnya.
Bacaan terkait:
- Bash Scripting – Sementara Dan Sampai Perulangan Dijelaskan Dengan Contoh
- Skrip Bash – Untuk Pengulangan Dijelaskan Dengan Contoh
- Bash Scripting – Fungsi Dijelaskan Dengan Contoh
- Bash Scripting – Variabel Dijelaskan Dengan Contoh
- Pengalihan Bash Dijelaskan Dengan Contoh
- Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux
- Tutorial Bash Heredoc Untuk Pemula