GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Bash Array Terbaik dengan 15 Contoh

Array adalah variabel yang berisi beberapa nilai yang mungkin bertipe sama atau bertipe berbeda. Tidak ada batasan maksimum untuk ukuran array, atau persyaratan apa pun bahwa variabel anggota diindeks atau ditugaskan secara berurutan. Indeks array dimulai dengan nol.

Pada artikel ini, mari kita tinjau 15 berbagai operasi array di bash.

Artikel ini adalah bagian dari seri Tutorial Bash yang sedang berjalan. Bagi mereka yang baru mengenal bash scripting, dapatkan permulaan dari tutorial Pengenalan Bash Scripting.

1. Mendeklarasikan Array dan Menetapkan nilai

Di bash, array dibuat secara otomatis ketika variabel digunakan dalam format seperti,

name[index]=value
  • nama adalah nama apa saja untuk array
  • indeks dapat berupa angka atau ekspresi apa pun yang harus dievaluasi ke angka yang lebih besar dari atau sama dengan nol. Anda dapat mendeklarasikan array eksplisit menggunakan mendeklarasikan -a arrayname.
$ cat arraymanip.sh
#! /bin/bash
Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'

echo ${Unix[1]}

$./arraymanip.sh
Red hat

Untuk mengakses elemen dari array, gunakan tanda kurung kurawal seperti ${name[index]}.

2. Inisialisasi array selama deklarasi

Daripada menginisialisasi setiap elemen array secara terpisah, Anda dapat mendeklarasikan dan menginisialisasi array dengan menentukan daftar elemen (dipisahkan dengan spasi) dengan kurung kurawal.

Syntax:
declare -a arrayname=(element1 element2 element3)

Jika elemen memiliki karakter spasi putih, sertakan dengan tanda kutip.

#! /bin/bash
$cat arraymanip.sh
declare -a Unix=('Debian' 'Red hat' 'Red hat' 'Suse' 'Fedora');

mendeklarasikan -a mendeklarasikan sebuah array dan semua elemen dalam tanda kurung adalah elemen dari sebuah array.

3. Cetak Seluruh Bash Array

Ada berbagai cara untuk mencetak seluruh elemen array. Jika nomor indeks adalah @ atau *, semua anggota array direferensikan. Anda dapat melintasi elemen array dan mencetaknya, menggunakan pernyataan perulangan di bash.

echo ${Unix[@]}

# Add the above echo statement into the arraymanip.sh
#./t.sh
Debian Red hat Ubuntu Suse

Mengacu pada isi variabel anggota array tanpa memberikan nomor indeks sama dengan mengacu pada isi elemen pertama, yang direferensikan dengan nomor indeks nol.

4. Panjang Array Bash

Kita bisa mendapatkan panjang array menggunakan parameter khusus yang disebut $#.

${#arrayname[@]} memberi Anda panjang array.

$ cat arraymanip.sh
declare -a Unix=('Debian' 'Red hat' 'Suse' 'Fedora');
echo ${#Unix[@]} #Number of elements in the array
echo ${#Unix}  #Number of characters in the first element of the array.i.e Debian
$./arraymanip.sh
4
6

5. Panjang Elemen ke-n dalam Array

${#arrayname[n]} harus memberikan panjang elemen ke-n dalam sebuah array.

$cat arraymanip.sh
#! /bin/bash

Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'

echo ${#Unix[3]} # length of the element located at index 3 i.e Suse

$./arraymanip.sh
4

6. Ekstraksi dengan offset dan panjang untuk array

Contoh berikut menunjukkan cara mengekstrak 2 elemen mulai dari posisi 3 dari array bernama Unix.

$cat arraymanip.sh
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
echo ${Unix[@]:3:2}

$./arraymanip.sh
Suse Fedora

Contoh di atas mengembalikan elemen dalam indeks ke-3 dan indeks keempat. Indeks selalu dimulai dengan nol.

7. Ekstraksi dengan offset dan panjang, untuk elemen array tertentu

Untuk mengekstrak hanya empat elemen pertama dari elemen array . Misalnya, Ubuntu yang terletak di indeks kedua array, Anda dapat menggunakan offset dan panjang untuk elemen array tertentu.

$cat arraymanip.sh
#! /bin/bash

Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
echo ${Unix[2]:0:4}

./arraymanip.sh
Ubun

Contoh di atas mengekstrak empat karakter pertama dari elemen terindeks ke-2 dari sebuah array.

8. Cari dan Ganti dalam elemen array

Contoh berikut, mencari Ubuntu dalam elemen array, dan menggantinya dengan kata 'SCO Unix'.

$cat arraymanip.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');

echo ${Unix[@]/Ubuntu/SCO Unix}

$./arraymanip.sh
Debian Red hat SCO Unix Suse Fedora UTS OpenLinux

Dalam contoh ini, ia menggantikan elemen dalam indeks ke-2 'Ubuntu' dengan 'SCO Unix'. Tetapi contoh ini tidak akan menggantikan konten array secara permanen.

9. Tambahkan elemen ke Bash Array yang ada

Contoh berikut menunjukkan cara menambahkan elemen ke array yang ada.

$cat arraymanip.sh
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Unix=("${Unix[@]}" "AIX" "HP-UX")
echo ${Unix[7]}

$./arraymanip.sh
AIX

Dalam array yang disebut Unix, elemen 'AIX' dan 'HP-UX' ditambahkan masing-masing di indeks ke-7 dan ke-8.

10. Menghapus Elemen dari Array

unset digunakan untuk menghapus elemen dari array.unset akan memiliki efek yang sama seperti menugaskan null ke elemen.

$cat arraymanip.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');

unset Unix[3]
echo ${Unix[3]}

Skrip di atas hanya akan mencetak null yang merupakan nilai yang tersedia di indeks ke-3. Contoh berikut menunjukkan salah satu cara untuk menghapus elemen sepenuhnya dari array.

$ cat arraymanip.sh
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
pos=3
Unix=(${Unix[@]:0:$pos} ${Unix[@]:$(($pos + 1))})
echo ${Unix[@]}

$./arraymanip.sh
Debian Red hat Ubuntu Fedora UTS OpenLinux

Dalam contoh ini, ${Unix[@]:0:$pos} akan memberi Anda 3 elemen mulai dari indeks ke-0 yaitu 0,1,2 dan ${Unix[@]:4} akan memberikan elemen dari indeks ke-4 ke indeks indeks terakhir. Dan gabungkan kedua output di atas. Ini adalah salah satu solusi untuk menghapus elemen dari array.

11. Hapus Elemen Array Bash menggunakan Pola

Dalam kondisi pencarian Anda dapat memberikan pola, dan menyimpan elemen yang tersisa ke array lain seperti yang ditunjukkan di bawah ini.

$ cat arraymanip.sh
#!/bin/bash
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');
declare -a patter=( ${Unix[@]/Red*/} )
echo ${patter[@]}

$ ./arraymanip.sh
Debian Ubuntu Suse Fedora

Contoh di atas menghilangkan elemen yang memiliki pola Merah*.

12. Menyalin Array

Perluas elemen array dan simpan ke dalam array baru seperti yang ditunjukkan di bawah ini.

#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Linux=("${Unix[@]}")
echo ${Linux[@]}

$ ./arraymanip.sh
Debian Red hat Ubuntu Fedora UTS OpenLinux

13. Penggabungan dua Bash Array

Perluas elemen dari dua larik dan tetapkan ke larik baru.

$cat arraymanip.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh');

UnixShell=("${Unix[@]}" "${Shell[@]}")
echo ${UnixShell[@]}
echo ${#UnixShell[@]}

$ ./arraymanip.sh
Debian Red hat Ubuntu Suse Fedora UTS OpenLinux bash csh jsh rsh ksh rc tcsh
14

Ini mencetak larik yang memiliki elemen larik 'Unix' dan 'Shell', dan jumlah elemen larik baru adalah 14.

14. Menghapus Seluruh Array

unset digunakan untuk menghapus seluruh array.

$cat arraymanip.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh');

UnixShell=("${Unix[@]}" "${Shell[@]}")
unset UnixShell
echo ${#UnixShell[@]}

$ ./arraymanip.sh
0

Setelah array tidak disetel, panjangnya akan menjadi nol seperti yang ditunjukkan di atas.

15. Muat Konten File ke dalam Array

Anda dapat memuat konten file baris demi baris ke dalam array.

#Example file
$ cat logfile
Welcome
to
thegeekstuff
Linux
Unix

$ cat loadcontent.sh
#!/bin/bash
filecontent=( `cat "logfile" `)

for t in "${filecontent[@]}"
do
echo $t
done
echo "Read file content!"

$ ./loadcontent.sh
Welcome
to
thegeekstuff
Linux
Unix
Read file content!

Dalam contoh di atas, setiap indeks elemen array telah dicetak melalui for loop.

Bacaan yang Disarankan

Bash 101 Hacks, oleh Ramesh Natarajan . Saya menghabiskan sebagian besar waktu saya di lingkungan Linux. Jadi, tentu saja saya penggemar berat baris perintah Bash dan skrip shell. 15 tahun yang lalu, ketika saya mengerjakan berbagai rasa *nix, saya biasa menulis banyak kode pada shell C dan shell Korn. Bertahun-tahun kemudian, ketika saya mulai bekerja di Linux sebagai administrator sistem, saya cukup banyak mengotomatisasi setiap tugas yang mungkin menggunakan skrip Bash shell. Berdasarkan pengalaman Bash saya, saya telah menulis eBook Bash 101 Hacks yang berisi 101 contoh praktis pada baris perintah Bash dan skrip shell. Jika Anda berpikir untuk menguasai Bash, bantulah diri Anda sendiri dan baca buku ini, yang akan membantu Anda mengendalikan baris perintah Bash dan skrip shell.


Linux
  1. Tutorial Perintah Mengetik Dengan Contoh Untuk Pemula

  2. Bash Array Dengan Contoh

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. Tutorial Bash HereDoc Dengan Contoh

  2. Tutorial Perintah Numfmt Dengan Contoh Untuk Pemula

  3. Tutorial Perintah Shuf Dengan Contoh Untuk Pemula

  1. Tutorial Perintah Lipat Dengan Contoh Untuk Pemula

  2. Tutorial Perintah df Dengan Contoh Untuk Pemula

  3. Tutorial Perintah Teratas Dengan Contoh Untuk Pemula