Cara Memanipulasi dan Mengawal Data dengan Bash Array

Cara Memanipulasi Dan Mengawal Data Dengan Bash Array



Pembolehubah tatasusunan digunakan dalam mana-mana bahasa pengaturcaraan untuk menyimpan berbilang nilai menggunakan indeks. Indeks tatasusunan boleh menjadi nombor atau rentetan. Tatasusunan yang mengandungi indeks berangka dipanggil 'tatasusunan angka' dan tatasusunan yang mengandungi nilai rentetan sebagai indeks dipanggil 'tatasusunan bersekutu'. Tatasusunan berangka dan bersekutu boleh dibuat dalam Bash. Kaedah memanipulasi dan mengawal data tatasusunan Bash ditunjukkan secara terperinci menggunakan 15 contoh dalam tutorial ini.

Senarai Kandungan:

  1. Tentukan Tatasusunan mengikut Indeks
  2. Tentukan Tatasusunan dengan Berbilang Nilai
  3. Tentukan Tatasusunan Bersekutu
  4. Kira Nilai Tatasusunan
  5. Baca Nilai Tatasusunan mengikut Gelung
  6. Baca Nilai Tertentu Array
  7. Masukkan Nilai Tatasusunan
  8. Baca Kandungan Fail ke dalam Tatasusunan
  9. Gabungkan Nilai Tatasusunan
  10. Ubah suai Nilai Tatasusunan
  11. Keluarkan Nilai Tatasusunan
  12. Cari dan Gantikan Nilai Tatasusunan
  13. Gunakan Tatasusunan sebagai Argumen Fungsi
  14. Kembalikan Tatasusunan daripada Fungsi
  15. Jadikan Array Kosong

Tentukan Tatasusunan mengikut Indeks

Kaedah mengisytiharkan tatasusunan dengan menyebut indeks angka berjujukan atau tidak berurutan ditunjukkan dalam skrip berikut. Tatasusunan jenis ini dipanggil tatasusunan angka. Di sini, tatasusunan '$books' dicipta dengan mentakrifkan tiga indeks berjujukan dan tatasusunan '$produk' dicipta dengan mentakrifkan empat indeks bukan berjujukan. Semua nilai kedua-dua tatasusunan dicetak menggunakan fungsi 'printf'.







#!/bin/bash

#Tentukan indeks tatasusunan dalam susunan berurutan

buku [ 0 ] = 'Mempelajari Shell bash'

buku [ 1 ] = 'Ops Keselamatan Siber dengan bash'

buku [ 2 ] = 'Petua Pro Barisan Perintah Bash'

bergema 'Semua nilai tatasusunan pertama:'

printf '%s\n' ' ${buku[@]} '

#Tentukan indeks tatasusunan dalam susunan bukan urutan

produk [ 10 ] = 'Pen'

produk [ 5 ] = 'Pensel'

produk [ 9 ] = 'Rular'

produk [ 4 ] = 'Kertas Saiz A4'

bergema

bergema 'Semua nilai tatasusunan kedua:'

printf '%s\n' ' ${produk[@]} '

Pengeluaran :



Output berikut muncul selepas melaksanakan skrip. Nilai kedua-dua tatasusunan dicetak dalam output. Susunan indeks dikekalkan pada masa pencetakan untuk tatasusunan indeks tidak berurutan:



  p1





Pergi ke atas

Tentukan Tatasusunan dengan Berbilang Nilai

Tatasusunan angka dengan berbilang nilai boleh diisytiharkan menggunakan perintah 'deklarasikan' dengan pilihan -a atau tanpa menggunakan arahan 'deklarasi'. Dalam skrip berikut, tatasusunan pertama diisytiharkan menggunakan perintah 'deklarasi' dan tatasusunan kedua dibuat tanpa menggunakan arahan 'isytiharkan'.



#!/bin/bash

#Isytihar tatasusunan angka dengan kata kunci 'deklarasi'

mengisytiharkan -a nama = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' )

#Cetak nilai tatasusunan

bergema 'Semua nilai tatasusunan pertama:'

printf '%s\n' ' ${nama[@]} '

#Isytihar tatasusunan angka tanpa kata kunci 'deklarasi'

buku = ( 'Tutorial Skrip Shell' 'Bish Bash Bosh!' 'Belajar Bash dengan Cepat' )

#Tambah baris baharu

bergema

#Cetak nilai tatasusunan

bergema 'Semua nilai tatasusunan kedua:'

printf '%s\n' ' ${buku[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai kedua-dua tatasusunan dicetak di sini:

  p2

Pergi ke atas

Tentukan Tatasusunan Bersekutu

Tatasusunan yang mengandungi nilai rentetan sebagai indeks dipanggil tatasusunan bersekutu. Pilihan -A digunakan dengan arahan 'deklarasi' dalam Bash untuk mencipta tatasusunan Bash bersekutu. Dalam skrip berikut, tatasusunan bersekutu pertama diisytiharkan dengan menyebut indeks secara berasingan dan tatasusunan kedua diisytiharkan dengan menyebut semua pasangan nilai kunci pada masa pengisytiharan tatasusunan.

#!/bin/bash

#Isytiharkan pembolehubah tatasusunan bersekutu tanpa nilai

mengisytiharkan -A pekerja

#Tetapkan nilai secara berasingan dengan mentakrifkan indeks

pekerja [ 'ID' ] = '78564'

pekerja [ 'nama' ] = 'Pelakon Tersedia'

pekerja [ 'jawatan' ] = 'CEO'

pekerja [ 'gaji' ] = 300000

#Cetak dua nilai tatasusunan

bergema 'ID pekerja: ${pekerja[id]} '

bergema 'Nama Pekerja: ${pekerja[nama]} '

#Isytihar tatasusunan bersekutu dengan nilai

mengisytiharkan -A kursus = ( [ kod ] = 'CSE-206' [ nama ] = 'Pengaturcaraan Berorientasikan Objek' [ jam_kredit ] = 2.0 )

#Tambah baris baharu

bergema

#Cetak dua nilai tatasusunan tatasusunan kedua

bergema 'Nama kursus: ${course[name]} '

bergema 'Jam Kredit: ${course[credit_hour]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai tertentu tatasusunan bersekutu dicetak di sini dengan menyebut kunci atau nilai indeks:

  p3

Pergi ke atas

Kira Nilai Tatasusunan

Kaedah mengira jumlah elemen tatasusunan angka dan tatasusunan bersekutu ditunjukkan dalam skrip berikut:

#!/bin/bash

#Isytihar tatasusunan angka

mengisytiharkan -a nama = ( 'Michael' 'David' 'Alexander' 'Thomas' 'Robert' 'Richard' ) ;

bergema 'Panjang tatasusunan angka ialah ${#nama[@]} '

#Isytihar tatasusunan bersekutu

mengisytiharkan -A kursus = ( [ kod ] = 'CSE-206' [ nama ] = 'Pengaturcaraan Berorientasikan Objek' [ jam_kredit ] = 2.0 )

bergema 'Panjang tatasusunan bersekutu ialah ${#course[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Panjang tatasusunan tatasusunan angka dan bersekutu dicetak di sini:

  p4

Pergi ke atas

Baca Nilai Tatasusunan mengikut Gelung

Kaedah membaca semua nilai tatasusunan angka dan tatasusunan bersekutu menggunakan gelung 'untuk' ditunjukkan dalam skrip berikut:

#!/bin/bash

#Isytihar tatasusunan angka

mengisytiharkan -a buku = ( 'Tutorial Skrip Shell' 'Bish Bash Bosh!' 'Belajar Bash dengan Cepat' )

#Cetak nilai tatasusunan angka

bergema 'Nilai tatasusunan angka ialah:'

untuk dalam dalam ' ${buku[@]} '

buat

bergema ' $in '

selesai

bergema

#Isytihar tatasusunan bersekutu dengan nilai

mengisytiharkan -A pelanggan = (

[ ID ] = 'H-5623'

[ nama ] = 'Mr. Ahnaf'

[ alamat ] = '6/A, Dhanmondi, Dhaka.'

[ telefon ] = '+8801975642312' )

#Cetak nilai tatasusunan bersekutu

bergema 'Nilai tatasusunan bersekutu ialah:'

untuk k dalam ' ${!pelanggan[@]} '

buat

bergema ' $k => ${clients[$k]} '

selesai

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Di sini, nilai tatasusunan angka dan pasangan nilai kunci tatasusunan bersekutu dicetak dalam output:

  p5

Pergi ke atas

Baca Julat Nilai Tertentu bagi Tatasusunan

Nilai tatasusunan julat tertentu indeks ditunjukkan dalam skrip berikut. Dalam skrip, tatasusunan berangka empat elemen ditakrifkan. Dua nilai tatasusunan daripada indeks kedua tatasusunan akan dicetak kemudian.

#!/bin/bash

#Isytihar tatasusunan angka

mengisytiharkan -a kuih muih = ( 'Kek coklat' 'Kek Vanila' 'Kek Red Velvet' 'kek strawberi' )

#Cetak nilai tatasusunan tertentu

bergema 'Elemen ke-2 dan ke-3 nilai tatasusunan ialah:'

printf '%s\n' ' ${kek[@]:1:2} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai kedua dan ketiga tatasusunan ialah 'Vanilla Cake' dan 'Red Velvet Cake' yang dicetak dalam output:

  p6

Pergi ke atas

Masukkan Nilai Tatasusunan

Kaedah menambah berbilang nilai pada akhir tatasusunan ditunjukkan dalam skrip berikut. Tatasusunan utama iaitu '$books' mengandungi tiga elemen dan dua elemen ditambah pada penghujung tatasusunan '$books'.

#!/bin/bash

#Isytihar tatasusunan angka

mengisytiharkan -a buku = ( 'Tutorial Skrip Shell' 'Bish Bash Bosh!' 'Belajar Bash dengan Cepat' )

#Cetak nilai tatasusunan sebelum memasukkan

bergema 'Nilai tatasusunan:'

printf '%s\n' ' ${buku[@]} '

bergema

buku = ( ' ${buku[@]} ' 'Baris Perintah Linux dan Bible Skrip Shell' 'Panduan Skrip Bash Lanjutan oleh Mendel Cooper' )

#Cetak nilai tatasusunan selepas memasukkan

bergema 'Nilai tatasusunan selepas memasukkan dua nilai:'

printf '%s\n' ' ${buku[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai tatasusunan sebelum dan selepas memasukkan nilai baru dicetak dalam output:

  p7

Pergi ke atas

Baca Kandungan Fail ke dalam Tatasusunan

Buat fail teks bernama 'fruits.txt' dengan kandungan berikut untuk menguji skrip contoh ini:

fruits.txt

mangga

buah nangka

Nenas

Jingga

pisang

Dalam skrip berikut, kandungan fail disimpan dalam tatasusunan bernama '$data'. Di sini, setiap baris fail disimpan sebagai setiap elemen tatasusunan. Seterusnya, nilai tatasusunan dicetak.

#!/bin/bash

#Baca nama fail daripada pengguna

membaca -hlm 'Masukkan nama fail:' nama fail

jika [ -f $nama fail ]

kemudian

#Baca kandungan fail ke dalam tatasusunan'

data = ( ` kucing ' $nama fail ' ` )

bergema 'Kandungan fail diberikan di bawah:'

#Baca fail baris demi baris

untuk barisan dalam ' ${data[@]} '

buat

bergema $line

selesai

jadilah

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Output yang ditunjukkan oleh arahan 'cat' dan output skrip adalah serupa kerana fail yang sama diakses oleh arahan 'cat' dan skrip:

  p8

Pergi ke atas

Gabungkan Nilai Tatasusunan

Tatasusunan baharu dicipta dengan menggabungkan nilai pelbagai tatasusunan. Dalam skrip berikut, dua tatasusunan berangka rentetan ditakrifkan. Kemudian, tatasusunan baharu dicipta dengan menggabungkan nilai tatasusunan ini.

#!/bin/bash

#Isytiharkan tatasusunan pertama

mengisytiharkan -a senarai nama1 = ( 'Michael' 'David' 'Alexander' 'Thomas' )

bergema 'Nilai tatasusunan pertama ialah:'

printf '%s,' ${nameList1[@]}

bergema

#Isytiharkan tatasusunan kedua

mengisytiharkan -a senarai nama2 = ( 'Robert' 'Richard' )

bergema 'Nilai tatasusunan kedua ialah:'

printf '%s,' ${nameList2[@]}

bergema

#Buat tatasusunan baharu dengan menggabungkan dua tatasusunan

gabungan_array = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

bergema 'Nilai tatasusunan gabungan ialah:'

printf '%s,' ${combined_array[@]}

bergema

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Di sini, nilai tiga tatasusunan dicetak dalam output. Tatasusunan ketiga mengandungi semua nilai tatasusunan pertama dan kedua:

  p9

Pergi ke atas

Ubah suai Nilai Tatasusunan

Kaedah mengemas kini satu atau lebih nilai tatasusunan dengan menyebut indeks ditunjukkan dalam skrip berikut:

#!/bin/bash

#Isytiharkan tatasusunan pertama

mengisytiharkan -a senarai nama = ( 'Michael' 'David' 'Alexander' 'Thomas' )

bergema 'Nilai tatasusunan:'

printf '%s,' ${nameList[@]}

bergema

#Kemas kini nilai ke-2 tatasusunan

senarai nama [ 1 ] = 'Robert'

bergema 'Nilai tatasusunan selepas kemas kini:'

printf '%s,' ${nameList[@]}

bergema

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai tatasusunan utama dan tatasusunan yang dikemas kini dicetak dalam output:

  p10

Keluarkan Nilai Tatasusunan

Perintah 'tidak ditetapkan' digunakan untuk mengalih keluar elemen tertentu atau semua elemen tatasusunan. Dalam skrip berikut, elemen kedua tatasusunan dialih keluar.

#!/bin/bash

#Isytihar tatasusunan angka

mengisytiharkan -a buku = ( 'Tutorial Skrip Shell' 'Bish Bash Bosh!' 'Belajar Bash dengan Cepat' )

#Cetak nilai tatasusunan sebelum mengalih keluar

bergema 'Nilai tatasusunan:'

printf '%s\n' ' ${buku[@]} '

bergema

#Alih keluar elemen ke-2

tidak ditetapkan buku [ 1 ]

#Cetak nilai tatasusunan selepas dialih keluar

bergema 'Nilai tatasusunan selepas mengalih keluar nilai ke-2:'

printf '%s\n' ' ${buku[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai tatasusunan utama dan nilai tatasusunan selepas mengalih keluar satu nilai dicetak dalam output:

  p11

Pergi ke atas

Cari dan Gantikan Nilai Tatasusunan

Dalam skrip berikut, nilai tertentu tatasusunan digantikan dengan nilai lain jika nilai carian yang ditakrifkan dalam corak dipadankan dengan sebarang nilai tatasusunan '$names'.

#!/bin/bash

#Isytiharkan tatasusunan pertama

mengisytiharkan -a nama = ( 'Michael' 'David' 'Alexander' 'Thomas' )

#Cetak nilai tatasusunan asal

bergema 'Nilai tatasusunan asal:'

printf '%s\n' ' ${nama[@]} '

#Menjana rentetan selepas menggantikan nilai tatasusunan

array_update = ${nama[@]/Alexander/Richard}

#Cetak nilai tatasusunan selepas diganti

bergema 'Nilai tatasusunan selepas ganti:'

printf '%s\n' ' ${updated_array[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Nilai tatasusunan utama dan nilai tatasusunan selepas menggantikan nilai dicetak dalam output:

  p12

Pergi ke atas

Gunakan Tatasusunan sebagai Argumen Fungsi

Dalam skrip berikut, pembolehubah tatasusunan diluluskan sebagai hujah fungsi dan nilai tatasusunan itu dicetak kemudian.

#!/bin/bash

#Isytiharkan susunan nombor

mengisytiharkan -a nombor = ( 10 6 Empat lima 13 8 )

#Tentukan fungsi yang akan mengambil nilai hujah

fungsi ( )

{

#Baca hujah pertama

nombor = $1

#Cetak nilai tatasusunan

bergema 'Nilai tatasusunan:'

printf '%d\n' ' ${nombor[@]} '

}

#Panggil fungsi dengan tatasusunan sebagai hujah

fungsi ' ${nombor[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip:

  p13

Pergi ke atas

Kembalikan Tatasusunan daripada Fungsi

Dalam skrip berikut, fungsi dipanggil dengan empat argumen angka. Tatasusunan dicipta dengan nilai argumen dan tatasusunan itu dikembalikan daripada fungsi kepada pemanggil.

#!/bin/bash

#Tentukan fungsi yang membaca empat nilai argumen

fungsi ( )

{

#Baca nilai hujah

nombor = ( $1 $2 $3 $4 )

#Kembalikan tatasusunan

bergema ' ${nombor[@]} '

}

#Panggil fungsi dengan tiga argumen

return_val =$ ( fungsi 78 Empat lima 90 23 )

#Simpan nilai pulangan dalam tatasusunan

membaca -a pada satu <<< $return_val

#Cetak nilai tatasusunan yang dikembalikan

bergema 'Nilai tatasusunan ialah:'

untuk dalam dalam ' ${num[@]} '

buat

bergema ' $in '

selesai

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip:

Pergi ke atas

Jadikan Array Kosong

Skrip berikut menunjukkan kaedah membuat tatasusunan kosong menggunakan arahan 'nyah ditetapkan'. Jumlah bilangan nilai tatasusunan dicetak sebelum dan selepas membuat tatasusunan kosong.

#!/bin/bash

#Isytiharkan susunan nombor

mengisytiharkan -a nombor = ( 10 6 Empat lima 13 80 )

bergema 'Bilangan nilai tatasusunan: ${#numbers[@]} '

#Jadikan tatasusunan kosong

tidak ditetapkan nombor

bergema 'Bilangan nilai tatasusunan selepas membuat tatasusunan kosong: ${#numbers[@]} '

Pengeluaran :

Output berikut muncul selepas melaksanakan skrip. Bilangan elemen tatasusunan menjadi 0 selepas membuat tatasusunan kosong:

  p15

Pergi ke atas

Kesimpulan

Kaedah yang berbeza untuk mengisytiharkan, mengakses, mengubah suai dan mengalih keluar pembolehubah tatasusunan dalam skrip Bash ditunjukkan dalam tutorial ini menggunakan 15 contoh mudah. Kami berharap tutorial ini akan membantu pengguna Bash mengetahui penggunaan tatasusunan Bash secara terperinci.