Panduan untuk Bash Array

Diterbitkan: 2022-12-30

Dalam panduan tentang array Bash ini, Anda akan belajar cara mendeklarasikan dan bekerja dengan array terindeks dan asosiatif di Bash.

Di Bash, Anda bisa membuat array untuk menyimpan kumpulan elemen. Array Bash adalah koleksi satu dimensi . Dalam bahasa pemrograman seperti C dan C++, array adalah kumpulan elemen dari tipe data yang sama. Namun, di Bash, bergantung pada kasus penggunaan, Anda dapat menyimpan bilangan bulat dan string dalam larik yang sama.

Dalam tutorial ini, Anda akan belajar cara mendeklarasikan array Bash dan mengakses elemennya. Anda kemudian akan mempelajari cara mengulang melalui elemen array dan menambahkan elemen ke array. Terakhir, Anda akan belajar tentang array asosiatif di Bash.

Mari kita mulai!

Tertarik untuk coding bersama? Berikut prasyaratnya:

  • Jika Anda menggunakan mesin Mac atau Linux, Anda dapat membuka terminal dan kode bersama.
  • Jika Anda menggunakan mesin Windows, silakan instal Git Bash atau Subsistem Windows untuk Linux (WSL2).

Cara Mendeklarasikan Bash Array

Di bagian ini, Anda akan mempelajari sintaks untuk mendeklarasikan array Bash dan contoh kode.

Sintaks Deklarasi Bash Array

Anda dapat mendeklarasikan array di Bash menggunakan sintaks berikut:

 $ arrayName=(elt1 elt2 ... eltN) # arrayName is the name of the array # elt1 through eltN are the N elements in the array

Dalam sintaks di atas, arrayName menunjukkan nama larik yang berisi N elemen elt1...eltN .

Elemen-elemen array diapit antara tanda kurung buka dan tutup () . Perhatikan juga bahwa elemen array dipisahkan oleh spasi . Seperti halnya variabel Bash, seharusnya tidak ada spasi sebelum atau sesudah penugasan operator = .

Di sebagian besar bahasa pemrograman lainnya, Anda akan memisahkan elemen array atau koleksi serupa dengan koma. Tapi di Bash, spasi putih adalah pemisahnya.

Di Bash, array seperti itu di mana elemen-elemennya diidentifikasi oleh indeksnya disebut sebagai indexed array .

Mendeklarasikan Array Terindeks di Bash

Mari buat prices , larik angka.

 $ prices=(24 27 18 30 15)

Seperti yang disebutkan dalam sintaks, angka dalam array prices dipisahkan oleh spasi putih, diapit oleh tanda kurung, tanpa spasi sebelum dan sesudah operator penugasan =.

Di Bash, Anda dapat menggunakan perintah echo untuk mencetak nilai variabel. Menggunakan $variableName mencetak nilai variableName . Namun, Anda dapat melihat bahwa menggunakan nama array hanya akan mencetak elemen pertama.

 $ echo $prices 24

Array Bash mengikuti pengindeksan nol. Jadi elemen pertama berada di indeks 0, elemen kedua berada di indeks 1, dan seterusnya. Anda juga dapat menggunakan pengindeksan negatif; indeks elemen array terakhir adalah -1.

Apa yang terjadi jika Anda mencoba mengakses elemen pada indeks tertentu dan mencetaknya? Mari kita coba mencetak elemen pada indeks 1.

 $ echo $prices[1] 24[1]

Mengapa outputnya 24[1]? Ini karena Bash mengganti $prices dengan 24, elemen pertama dalam array dan [1] dicetak seperti itu.

Untuk mencetak elemen pada indeks tertentu, Anda dapat menggunakan perluasan parameter dalam bentuk ${prices[index]} .

 $ echo ${prices[1]} # 27 $ echo ${prices[2]} # 18

Untuk mencetak semua elemen dalam larik, Anda dapat menentukan @ alih-alih indeks tertentu.

 $ echo ${prices[@]} 24 27 18 30 15

Selanjutnya, mari buat array string. Menjalankan perintah berikut akan membuat array yang diindeks:

 $ declare -a fruits

Opsi -a membuat array yang diindeks. Anda sekarang dapat mengisi array, satu elemen pada satu waktu, dengan mendeklarasikan elemen pada indeks tertentu, seperti yang ditunjukkan di bawah ini:

 $ fruits[0]="cherry" $ fruits[1]="berry" $ fruits[2]="apple" $ fruits[3]="pear" $ fruits[4]="melon" $ fruits[5]="orange"

Sekarang, untuk mencetak semua elemen array, Anda dapat menggunakan ${fruits[@]} .

 $ echo ${fruits[@]} cherry berry apple pear melon orange

Akses Elemen Array Bash

bash-array-akses-elemen

Anda dapat mengakses elemen array dengan cara berikut:

  • Ulangi array dan akses elemen secara langsung
  • Ulangi kumpulan indeks dan akses elemen pada indeks tertentu

Loop Melalui Elemen Array dan Akses

Jika Anda membuat kode dengan Python, Anda akan menggunakan perulangan for menggunakan sintaks berikut:

 for elt in some_list: print(elt)

Sekarang mari kita tulis Bash yang setara dengan for loop di atas.

Kita tahu bahwa {prices[@]} meluas ke semua elemen dalam array prices . Dan ${prices[@]} memberi kita nilai dari semua elemen.

Bash for loop mirip dengan sintaks for loop Python, tetapi pernyataan di badan loop harus diapit di dalam do dan done , seperti yang ditunjukkan:

 $ for price in ${prices[@]} > do > echo $price > done

Karena kita menggunakan perintah echo dan mencetak nilai variabel price , kita mendapatkan output berikut:

 # output 24 27 18 30 15

Akses Elemen Menggunakan Indeks Array

Cara lain untuk mengulang array adalah menggunakan indeks elemen. Ini mirip dengan konstruksi for loop di Python menggunakan fungsi range() :

 for i in range(len(some_list)): print(i)

Untuk mendapatkan daftar indeks yang akan diulang, Anda dapat menempatkan tanda seru ( ! ) sebelum nama larik di perluasan parameter. Ini akan memberi Anda daftar semua indeks yang valid untuk array, seperti yang ditunjukkan:

 $ echo ${!prices[@]} 0 1 2 3 4

Array prices berisi 5 elemen, jadi indeks dimulai dari 0 dan naik ke 4.

Selanjutnya, kita dapat mengulang daftar indeks dan mengakses elemen di setiap indeks. Untuk indeks i , ${prices[i]} adalah elemen pada indeks i .

 $ for i in ${!prices[@]} > do > echo ${prices[i]} > done

Loop di atas mencetak semua elemen dalam array.

 # output 24 27 18 30 15

Di sini, setelah mengakses setiap elemen, kami melakukan operasi sederhana untuk mencetak nilainya. Secara umum, kami dapat memiliki pemrosesan yang valid pada elemen.

Tambahkan Elemen ke Bash Array

Panduan-untuk-Bash-Array

Dalam array prices , kami memiliki lima elemen (pada indeks 0,1,2,3 dan 4). Jika Anda ingin menambahkan elemen ke akhir array pada indeks 5, Anda dapat melakukannya sebagai berikut:

 $ prices[5]=21

Kita melihat bahwa 21 telah ditambahkan ke akhir array harga.

 $ echo ${prices[@]} 24 27 18 30 15 21

Namun, akan lebih mudah untuk menambahkan ke akhir array—tanpa mengingat—indeks elemen yang terakhir ditambahkan atau jumlah elemen yang saat ini ada di dalam array.

Anda dapat menggunakan arrayName+=(elements(s)) untuk menambahkan satu atau lebih elemen ke array, seperti yang ditunjukkan:

 $ prices+=(10)

Sekarang, jika kita mencetak larik prices , kita melihat bahwa 10 telah ditambahkan ke akhir larik.

 $ echo ${prices[@]} 24 27 18 30 15 21 10

Selanjutnya, mari pelajari cara mendeklarasikan array asosiatif di Bash.

Array Asosiatif di Bash

Jika Anda ingin mendefinisikan hubungan dalam bentuk key-value pair, Anda dapat menggunakan larik asosiatif . Anda dapat mendeklarasikan array asosiatif menggunakan sintaks umum berikut. Perhatikan bahwa kami menggunakan opsi -A alih-alih -a .

 $ declare -A fruits_prices

Anda dapat menambahkan elemen ke array asosiatif dengan menentukan kunci dan nilai yang sesuai. Di sini, kami telah menambahkan nama buah sebagai kunci dan angka dari array harga sebagai nilainya.

 $ fruits_prices[cherry]=24 $ fruits_prices[berry]=27 $ fruits_prices[apple]=18 $ fruits_prices[pear]=30 $ fruits_prices[melon]=15 $ fruits_prices[orange]=21

Jadi bagaimana kita mengakses elemen dalam array asosiatif?

Sama seperti Anda mencari nilai menggunakan kunci yang sesuai dalam kamus Python, Anda dapat mengakses nilai dalam larik asosiatif menggunakan kunci.

 $ echo ${fruits_prices[berry]} # 27

Kita melihat bahwa ${fruits_prices[@]} diperluas ke nilai dan ${!fruits_prices[@]} diperluas ke kunci.

 $ echo ${fruits_prices[@]} # Output: 18 27 21 24 30 15 $ echo ${!fruits_prices[@]} # Output: apple berry orange cherry pear melon

Catatan : Urutan elemen tidak sama dengan urutan saat kita menambahkannya. Ini karena, tidak seperti array yang diindeks, array asosiatif bukanlah koleksi yang dipesan. Sebaliknya, mereka bekerja pada asosiasi antara kunci dan nilai. Oleh karena itu, kunci untuk array asosiatif adalah indeks untuk array yang diindeks.

Anda juga dapat mengulang array asosiatif dan mengakses kunci, seperti yang ditunjukkan:

 $ for key in ${!fruits_prices[@]} > do > echo $key > done
 # Output apple berry orange cherry pear melon

Loop berikut menunjukkan bagaimana Anda dapat mengakses nilai.

 $ for value in ${fruits_prices[@]} > do > echo $value > done
 # Output 18 27 21 24 30 15

Meskipun disarankan untuk menggunakan arrayName[key]=value , Anda juga dapat mendeklarasikannya sebagai urutan seperti ini:

 declare -A arrayName arrayName=(key1 value1 key2 value2 ... keyN valueN)

Dengan cara ini, Bash menyimpulkan elemen pertama sebagai kunci pertama, elemen kedua sebagai nilai pertama, dan seterusnya.

Menyimpulkan

Saya harap Anda sekarang mengerti cara membuat dan bekerja dengan array Bash. Berikut ulasan singkat tentang apa yang telah Anda pelajari.

  • Anda dapat mendeklarasikan array yang diindeks di Bash menggunakan sintaks arrayName=(elt1 elt2 elt3 ... eltN) atau menjalankan declare -a arrayName dan menambahkan elemen ke array.
  • Untuk mengakses elemen, Anda dapat mengulang menggunakan ${arrayName[@]} . Alternatifnya, Anda bisa mendapatkan daftar semua indeks yang valid menggunakan ekspansi parameter ${!arrayName[@]} .
  • Terakhir, Anda juga belajar cara mendeklarasikan array asosiatif untuk menyimpan key-value pair di Bash.

Selanjutnya, lihat tutorial untuk loop di Bash.