Cara Mendapatkan Panjang Array Di Bash - Kamplongan

Cara mendapatkan Panjang Array di Bash

Array adalah salah satu konsep yang tidak jelas di Bash. Sintaks, deklarasi, akses, dll semuanya berbeda dari tampilan umum. Jika digunakan dengan benar, array adalah konsep yang kuat untuk digunakan di Bash.

Untuk memeriksa panjang array di bash, gunakan sintaks berikut:

${#array_name[@]}

Ini bukan satu-satunya metode. Mari kita lihat secara detail.

Metode 1: Gunakan ekspresi panjang larik

Mari menginisialisasi array seperti ini:

epoch=(1 "Jan" 1970 "Thu")

Cetak panjang larik dengan menambahkan satu pon # di awal nama array.

echo ${#array_name[@]}

Sintaks untuk mencetak jumlah elemen (#) dalam larik

echo ${#epoch[@]}

Terjemahan: “cetak (echo) jumlah elemen (#) dalam array ‘Epoch’ (array_name)”

Cetak elemen terlebih dahulu, lalu jumlah elemen dalam array
Cetak jumlah elemen dalam array

Ini berfungsi dan menampilkan empat elemen yang ada dalam larik ini.

💡

Untuk menandakan semua elemen (setiap elemen dalam array), silakan gunakan @ alih-alih * dengan segala cara. Itu karena cara mereka mengurai argumen. @ mendukung spasi di dalam argumen sedangkan * tidak.

Contoh praktis

Di mana notasi ini dapat digunakan? Dalam banyak skrip. Metode ini cepat dan membutuhkan daya komputasi yang lebih sedikit untuk memeriksa jumlah elemen dalam array.

Format ini banyak digunakan dalam loop untuk mengakhiri loop setelah sejumlah langkah tertentu.

Di sini saya membuat skrip yang memiliki daftar aplikasi programs Himpunan. Script membuat array lain updated_list untuk program yang tidak diinstal. Hasil akhirnya adalah jumlah program dan namanya yang akan diinstal.

#!/bin/bash

# Program list
programs=(grub os-prober networkmanager base-devel linux-headers ntfs-3g mtools dosfstools)

# "pacman -Q": $?=0 success, 1 failure

i=0
updated_list=()
while [[ $i -lt ${#programs[@]} ]]; do
        program=${programs[$i]}

        # Search for installed package (and hide errors from output)
        pacman -Q $program 2> /dev/null #check for package

        # (if exit code != 0, then add it to list)
        if [[ $? -ne 0 ]]; then updated_list+=($program); fi
        
        ((i++))
done
echo "${#updated_list[@]} programs to install: ${updated_list[@]}"

Mari uraikan skrip kecil ini:

  • programs: Ini adalah larik yang berisi daftar program yang akan diinstal.
  • i=0: inisialisasi variabel $i untuk loop, yang bertambah di akhir badan loop melalui ((i++)) [mathematical expressions must be bounded by double parentheses].
  • while []; do ..... done: Ini adalah perulangan while. Tujuannya adalah untuk menghapus program yang sudah terinstal di sistem, sehingga meminimalkan elemen dalam daftar.
  • Itu pacman -Q <package_name>: Pacman adalah manajer paket dari Arch linux. Itu -Q tag singkatan dari pertanyaanyang digunakan untuk mencari paket yang diinstal dalam sistem lokal. Ini mengembalikan kode keluar 0 setelah sukses, dan 1 setelah gagal (dalam menemukan paket).

Ada ${#programs[@]} ekspresi, yang berarti jumlah elemen dalam larik ‘program‘. Dari deklarasi tersebut, nilainya adalah ‘8‘. Ini mencegah loop dari mengeksekusi selamanya.

Bash Basics Series #5: Menggunakan Array di Bash

Saatnya menggunakan array dalam skrip bash shell di bab ini. Belajar menambahkan elemen, menghapusnya, dan mendapatkan panjang array.

Menggunakan for for, jumlah elemen dalam array dapat ditemukan. Ini cukup sederhana, tetapi jangan gunakan metode ini secara umum kecuali Kalian melakukan lebih dari sekadar menghitung.

Loopnya seperti di bawah ini:

#!/bin/bash

# Array
programs=("ip" "bat" "exa" "neofetch")

# Loop to count elements
len=0
for x in ${programs[@]}; do
    ((len++))
done

# Print count
echo "array is $len elements long"
  • programs adalah larik contoh
  • len adalah variabel yang digunakan untuk menghitung elemen (diinisialisasi dengan nilai 0 agar dapat menghitung)
  • for .... done adalah loop untuk melewati array dan menghitung setiap elemen. Ini menambah variabel len untuk setiap elemen.
  • Kemudian panjangnya dicetak di bagian akhir.

Ingat ketika saya sebutkan jangan gunakan metode ini? Karena itu tidak cocok dengan data yang besar dan menyebabkan masalah dalam penghitungan.

Bagaimana loop membutuhkan waktu lama untuk menghitung data yang sangat besar

Pelajari lebih lanjut tentang Bash Scripting

Bash Basics adalah seri di mana semua yang perlu Kalian ketahui tentang skrip bash diajarkan dengan contoh-contoh menarik. Jika Kalian menyukai skrip Bash, periksalah:

Pelajari Bash Scripting Gratis Dengan Seri Tutorial Ini

Baru untuk bash? Mulailah belajar skrip bash dengan seri ini dengan cara yang teratur. Setiap bab juga menyertakan contoh latihan untuk melatih pembelajaran Kalian.

Kami harap Kalian belajar sesuatu dari artikel ini. Jatuhkan saran Kalian di bagian komentar.

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: