Apa Itu Kamus Bash di Linux, dan Bagaimana Cara Menggunakannya?

 


Kamus Bash memberi Anda peta hash dan array asosiatif dalam skrip shell Linux. Kami akan menunjukkan kepada Anda bagaimana menggunakan struktur data yang kuat dan berguna ini dalam skrip shell Linux Anda sendiri.


Mawar dengan Nama Lain

Nama formal untuk kamus adalah array asosiatif. Mereka juga disebut tabel hash dan peta hash. Mereka adalah struktur data yang berfungsi mirip dengan array biasa, tetapi dengan perbedaan yang signifikan.

Array adalah kumpulan nilai data yang disimpan dalam satu struktur data. Untuk mengakses salah satu nilai data, yang dikenal sebagai elemen array, Anda perlu mengetahui posisinya dalam array. Posisi elemen array dalam array dikenal sebagai indeksnya, sehingga jenis array ini dikenal sebagai array terindeks. Mereka adalah jenis array yang paling umum digunakan.


Namun, mereka memiliki kekurangan. Bagaimana Anda mengakses elemen array jika Anda tidak tahu posisinya di dalam daftar? Anda perlu menjalankan semua elemen dalam array, menguji untuk melihat apakah nilai di lokasi itu adalah yang Anda cari.


Array asosiatif mengatasi masalah itu. Mereka tidak menggunakan bilangan bulat untuk mengidentifikasi elemen array secara unik. Mereka menggunakan kata-kata unik yang dikenal sebagai kata kunci. Anda dapat mengambil nilai untuk elemen array dengan menggunakan kata kuncinya, di mana pun posisinya di dalam array. Dengan array yang diindeks, angka integer yang mewakili posisi dalam array berada dalam urutan menaik. Kata kunci dalam array asosiatif dapat dalam urutan apa pun.


Anda dapat mencari nilai dalam array asosiatif dengan mencari dengan kata kuncinya. Mencari sebuah kata dan mengambil nilai yang terkait meniru mencari kata dalam kamus dan menemukan artinya. Itu sebabnya array asosiatif dikenal sebagai kamus.


Bash 4.0 atau Lebih Tinggi

Array asosiatif didukung di shell Bash versi 4.0 atau lebih tinggi. Jika Anda menggunakan distribusi Linux saat ini, Anda akan baik-baik saja. Untuk memeriksa versi Bash Anda, gunakan perintah ini:


bash --versi



Mesin yang digunakan untuk meneliti artikel ini telah menginstal Bash 5.1.4, jadi kami siap melakukannya.


Prinsip dasar

Untuk membuat array asosiatif pada baris perintah terminal atau dalam skrip, kami menggunakan perintah Bash mendeklarasikan. Opsi -A(asosiatif) memberi tahu Bash bahwa ini akan menjadi array asosiatif dan bukan array yang diindeks.


nyatakan -Akronim



Ini menciptakan array asosiatif yang disebut "akronim."


Untuk memasukkan beberapa data ke dalam array kita, kita perlu memberikan kata kunci dan nilai. Kita dapat melakukannya dengan menggunakan format ini:


nama-array[kunci]=Nilai


Mari tambahkan beberapa elemen array:


akronim[ACK]=Penghargaan

akronim[BGP]="Protokol Gerbang Perbatasan"

akronim[CIDR]="Perutean Antar-Domain Tanpa Kelas"

akronim[DHCP]="Protokol Konfigurasi Host Dinamis"

akronim[EOF]="Akhir Bingkai"



Perintah-perintah tersebut mendefinisikan lima elemen array. Perhatikan bahwa nilai dibungkus dengan tanda kutip jika ada spasi di dalam nilai. Kata kunci kami dimasukkan dalam urutan abjad, tetapi dapat dimasukkan dalam urutan apa pun yang Anda suka. Kata kunci harus unik. Jika Anda mencoba membuat dua entri dengan kata kunci yang sama, nilai kedua yang Anda masukkan akan menimpa yang pertama. Anda hanya akan memiliki satu entri dengan kata kunci tersebut, dan entri tersebut akan dikaitkan dengan nilai kedua yang Anda tambahkan.


Untuk mengambil nilai dari array, kami menggunakan perintah dalam format ini:


${nama-array[kunci]}


Kita dapat menggunakan echo untuk mengirim output ke jendela terminal:


echo ${akronim[ACK]}

echo ${akronim[DHCP]}



Menggunakan Loop

Array cocok untuk digunakan dalam loop dengan sangat baik. Array asosiatif tidak terkecuali. Loop menyediakan cara yang efisien untuk menjalankan urutan tindakan tanpa bagian kode yang berulang. Sebelum kita melihat loop, ada cara yang efisien untuk mendeklarasikan array.


Kami membuat array menggunakan declareperintah ( -Aopsi yang sama  seperti sebelumnya), tetapi kami menyediakan kata kunci dan nilai sebagai daftar pada baris perintah.


deklarasikan -A negara=( [ALB]=Albania [BHR]=Bahrain [CMR]=Kamerun [DNK]=Denmark [EGY]=Mesir )


Nama lariknya adalah “negara”, dan terhubung ke daftar nilai dengan tanda sama dengan ” =.” Daftar nilai dibungkus dalam tanda kurung “ ()” dan setiap kata kunci dibungkus dalam tanda kurung “ []“. Perhatikan bahwa tidak ada koma yang memisahkan nilai. Jika Anda memiliki string nilai yang berisi spasi, Anda harus membungkusnya dengan tanda kutip.



Untuk membuat larik asosiatif mengembalikan kata kunci alih-alih nilainya, tambahkan tanda seru “ !” di depan nama larik. Simbol at “ @” dapat digunakan sebagai wildcard, artinya semua elemen array.


forLoop ini akan mencantumkan semua kata kunci:


untuk kunci di "${!negara[@]}"; lakukan echo $kunci; selesai



Perhatikan bahwa kata kunci tidak harus dicantumkan dalam urutan pembuatannya, tetapi itu tidak masalah. Array asosiatif tidak bergantung pada indeks yang dipesan.


Kami juga dapat menggunakan perluasan parameter untuk mencantumkan semua kata kunci. Mereka akan terdaftar pada satu baris, bukan satu per baris.


echo "${!negara[@]}"

echo "${!akronim[@]}"



Kami dapat menambah forloop kami untuk mencetak kata kunci dan nilai secara bersamaan.


untuk kunci di "${!akronim[@]}"; lakukan echo "$kunci - ${akronim[$kunci]}"; selesai



Jika kita ingin mengetahui berapa banyak elemen yang ada di dalam array, kita dapat menggunakan hash “#” di depan nama array sebagai ganti tanda seru.


echo "${!negara[@]}"

echo "${!akronim[@]}"



Memeriksa Apakah Elemen Array Ada

Jika Anda mencari kata kunci tetapi tidak ada elemen array seperti itu, nilai yang dikembalikan akan berupa string kosong. Terkadang berguna untuk memiliki indikator yang berbeda untuk ada atau tidak adanya elemen array.


Kita dapat memeriksa keberadaan elemen array menggunakan +_operator “ ”. Perhatikan bahwa ini muncul setelah kata kunci, bukan di depan nama array seperti operator sebelumnya yang telah kita lihat.


if [ ${akronim[EOF]+_} ]; lalu echo "Ditemukan"; else echo "Tidak ditemukan"; fi

if [ ${akronim[FTP]+_} ]; lalu echo "Ditemukan"; else echo "Tidak ditemukan"; fi



Elemen larik dengan kata kunci “EOF” ditemukan dalam larik, tetapi elemen larik dengan kata kunci “FTP” tidak.


Menambahkan Elemen Array

Menambahkan elemen baru ke array asosiatif itu mudah. Tidak seperti beberapa bahasa pemrograman, Anda tidak perlu menentukan ukuran array saat mendeklarasikannya. Anda dapat terus menambahkan elemen baru tanpa mencapai batas atas yang telah ditentukan.


Untuk menambahkan elemen baru ke array, kita menggunakan +=operator “ ”.


negara+=( [FJI]=Fiji )

echo "$(#negara[@]}"

echo ${negara[FJI]}



Jumlah elemen dalam array sekarang enam, dan mencari kata kunci baru menemukan elemen array dan mengembalikan nilainya.


Menghapus Elemen Array dan Array

The unsetPerintah ini digunakan untuk menghapus elemen array. Jika kata kunci memiliki spasi di dalamnya, bungkus dengan tanda kutip.


akronim tidak disetel[EOF]

if [ ${akronim[EOF]+_} ]; lalu echo "Ditemukan"; else echo "Tidak ditemukan"; fi



Untuk menghapus seluruh array, gunakan unsetdengan nama array.


negara yang belum disetel



Menggunakan Variabel dengan Array

Menggunakan variabel dengan array asosiatif sangatlah mudah. Dalam contoh ini, kami akan menetapkan kunci variabel ke string “EOF.” Kami akan menggunakan variabel ketika kami menambahkan elemen array baru ke array. Sebenarnya, kami mengganti elemen array yang kami hapus sebelumnya.


Kami akan mengambil elemen array baru dengan memanggilnya dengan kata kunci baru dan juga, dengan menggunakan variabel. Jika kata kunci berisi spasi, Anda harus membungkus nama variabel dalam tanda kutip.


kunci = EOF

akronim[$key]="Akhir Bingkai"

echo ${akronim[EOF]}

echo ${akronim[$key]}



Menjadi kreatif

Contoh kami adalah kumpulan informasi di mana setiap elemen array independen dari yang lainnya, seperti kamus. Masing-masing adalah definisi yang unik. Tetapi array asosiatif dapat dengan mudah menampung berbagai informasi yang semuanya terkait dengan satu hal, seperti spesifikasi berbagai perangkat keras komputer:


nyatakan -Spesifikasi

spesifikasi[CPU]="Dual Core AMD Ryzen 5 3600"

spesifikasi[Kecepatan]="3600 MHz"

spesifikasi[Kernel]="5.11.0-17-generik x86_64"

spesifikasi[Mem]="1978.5 MiB"

spesifikasi[Penyimpanan]="32 GiB"

spesifikasi[Shell]="Bash"

echo ${spesifikasi[CPU]}



Menulis secara efisien dalam suatu bahasa berarti mengetahui mekanisme dan struktur yang ditawarkannya, dan memilih yang paling tepat untuk masalah yang Anda coba pecahkan. Array asosiatif memberi Anda cara yang mudah digunakan untuk menyimpan data yang dapat Anda cari berdasarkan nama, seperti kamus.

Next Post Previous Post
No Comment
Add Comment
comment url