Array adalah salah satu struktur data yang paling banyak digunakan dan mendasar. Anda dapat menganggap array adalah variabel yang dapat menyimpan banyak variabel di dalamnya.
Dalam artikel ini, kami akan membahas array Bash, dan menjelaskan cara menggunakannya dalam skrip Bash Anda.
Bash Array #
Bash mendukung tipe array berindeks numerik dan asosiatif satu dimensi. Array numerik direferensikan menggunakan bilangan bulat, dan asosiatif direferensikan menggunakan string.
Array yang diindeks secara numerik dapat diakses dari akhir menggunakan indeks negatif, indeks -1
referensi elemen terakhir. Indeks tidak harus bersebelahan.
Tidak seperti kebanyakan bahasa pemrograman, elemen array Bash tidak harus memiliki tipe data yang sama. Anda dapat membuat larik yang berisi string dan angka.
Bash tidak mendukung array multidimensi, dan Anda tidak dapat memiliki elemen array yang juga array.
Tidak ada batasan jumlah maksimum elemen yang dapat disimpan dalam array.
Membuat Array Bash #
Array di Bash dapat diinisialisasi dengan cara yang berbeda.
Membuat array yang diindeks secara numerik #
Variabel bash tidak diketik, variabel apa pun dapat digunakan sebagai array yang diindeks tanpa mendeklarasikannya.
Untuk mendeklarasikan array secara eksplisit, gunakan deklarasi bawaan:
declare -a array_name
Salah satu cara untuk membuat array terindeks adalah dengan menggunakan form berikut:
array_name[index_1]=value_1
array_name[index_2]=value_2
array_name[index_n]=value_n
Dimana index_*
adalah bilangan bulat positif.
Cara lain untuk membuat array numerik adalah dengan menentukan daftar elemen di dalam tanda kurung, dipisahkan dengan spasi kosong:
array_name=( element_1 element_2 element_N )
Ketika array dibuat menggunakan formulir di atas, pengindeksan dimulai dari nol yaitu elemen pertama memiliki indeks 0
.
Membuat array asosiatif #
Tidak seperti yang diindeks secara numerik, array asosiatif harus dideklarasikan sebelum dapat digunakan.
Untuk mendeklarasikan array asosiatif gunakan declare
bawaan dengan -A
opsi (huruf besar):
declare -A array_name
Array asosiatif dapat dibuat menggunakan bentuk berikut:
declare -A array_name
array_name[index_foo]=value_foo
array_name[index_bar]=value_bar
array_name[index_xyz]=value_xyz
Dimana index_*
bisa berupa string apa saja.
Anda juga dapat membuat array asosiatif menggunakan formulir di bawah ini:
declare -A array_name
array_name=(
[index_foo]=value_foo
[index_bar]=value_bar
[index_xyz]=value_xyz
)
Operasi Array #
Sintaks array Bash mungkin terlihat sedikit aneh pada awalnya, tetapi akan lebih masuk akal setelah Anda membaca artikel ini.
Elemen Referensi #
Untuk mereferensikan satu elemen, Anda perlu mengetahui indeks elemen.
Setiap elemen dapat direferensikan menggunakan sintaks berikut:
${array_name[index]}
Sintaks untuk mengakses elemen array mirip dengan sintaks kebanyakan bahasa pemrograman. Tanda kurung kurawal ${}
diperlukan untuk menghindari operator perluasan nama file shell.
Mari cetak elemen dengan indeks 1
:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print element
echo ${my_array[1]}
Helium
Jika Anda menggunakan @
atau *
sebagai indeks, kata diperluas ke semua anggota array. Untuk mencetak semua elemen yang akan Anda gunakan:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium
Satu-satunya perbedaan antara @
dan *
adalah ketika bentuk ${my_array[x]}
dikelilingi dengan tanda kutip ganda. Dalam hal ini, *
diperluas ke satu kata di mana elemen array dipisahkan dengan spasi. @
memperluas setiap elemen array ke kata yang terpisah. Ini sangat penting saat menggunakan formulir untuk buta huruf melalui elemen array.
Untuk mencetak kunci larik tambahkan !
operator sebelum nama larik:
${!array_name[index]}
Ini contohnya:
## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## print all elements
echo "${!my_array[@]}"
0 1 2 3
Panjang Array #
Untuk mendapatkan panjang array, gunakan formulir berikut:
${#array_name[@]}
Sintaksnya sama seperti ketika mereferensikan semua elemen dengan penambahan #
karakter sebelum nama array.## declare the array
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## array Length
echo ${#my_array[@]}
4
Mengulangi array #
Cara paling umum untuk mengulangi setiap item dalam array adalah dengan menggunakan for loop:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${my_array[@]}"
do
echo "$i"
done
Kode di atas akan mengulangi array dan mencetak setiap elemen dalam baris baru:
Hydrogen
Helium
Lithium
Beryllium
Berikut adalah contoh cara mencetak semua kunci dan nilai:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## Array Loop
for i in "${!my_array[@]}"
do
echo "$i" "${my_array[$i]}"
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
Cara lain untuk mengulang array adalah dengan mendapatkan panjang array dan menggunakan C style
lingkaran:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
# Length of the array
length=${#my_array[@]}
# Array Loop
for (( i=0; i < ${length}; i++ ))
do
echo $i ${my_array[$i]}
done
0 Hydrogen
1 Helium
2 Lithium
3 Beryllium
Tambahkan elemen baru #
Untuk menambahkan elemen baru ke array bash dan menentukan indeksnya, gunakan formulir berikut:
my_array[index_n]="New Element"
Ini contohnya:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new element
my_array[9]="Aluminum"
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Aluminum
Cara lain untuk menambahkan elemen baru ke array tanpa menentukan indeks adalah dengan menggunakan +=
operator. Anda dapat menambahkan satu atau beberapa elemen:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## add new elements
my_array+=( Cobalt Nickel )
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
Hapus elemen #
Untuk menghapus satu elemen, Anda harus mengetahui indeks elemen. Sebuah elemen dapat dihapus menggunakan unset
perintah:
unset my_array[index]
Mari kita lihat contohnya:
declare -a my_array=( "Hydrogen" "Helium" "Lithium" "Beryllium" )
## remove element
unset my_array[2]
## print all elements
echo "${my_array[@]}"
Hydrogen Helium Beryllium
Kesimpulan #
Kami telah menjelaskan cara membuat array yang diindeks secara numerik dan asosiatif. Kami juga telah menunjukkan cara mengulangi array, menghitung panjang array, dan menambah dan menghapus elemen.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.