GNU/Linux >> Belajar Linux >  >> Linux

Bash Scripting – Array Asosiatif Dijelaskan Dengan Contoh

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

Linux
  1. Bash Array Dengan Contoh

  2. Pernyataan Bash If-Else Dengan Contoh

  3. Array AWK Dijelaskan dengan 5 Contoh Praktis

  1. Cara Menulis Skrip Bash dengan Contoh

  2. Tutorial Bash HereDoc Dengan Contoh

  3. Tutorial Bash Array Terbaik dengan 15 Contoh

  1. Array asosiatif di Bash

  2. Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux

  3. Pengalihan Bash Dijelaskan Dengan Contoh