Kuinka käsitellä ja hallita tietoja Bash Arraylla

Kuinka Kasitella Ja Hallita Tietoja Bash Arraylla



Taulukkomuuttujaa käytetään missä tahansa ohjelmointikielessä useiden arvojen tallentamiseen indeksin avulla. Taulukkoindeksi voi olla numero tai merkkijono. Numeerisen indeksin sisältävää taulukkoa kutsutaan 'numeeriseksi taulukoksi' ja taulukkoa, joka sisältää merkkijonon arvon indeksinä, kutsutaan 'assosiatiiviseksi taulukoksi'. Sekä numeerisia että assosiatiivisia taulukoita voidaan luoda Bashissa. Bash-taulukon tietojen käsittely- ja hallintamenetelmät esitetään yksityiskohtaisesti 15 esimerkin avulla tässä opetusohjelmassa.

Sisältöluettelo:

  1. Määritä taulukko indeksillä
  2. Määritä taulukko, jossa on useita arvoja
  3. Määrittele assosiatiivinen taulukko
  4. Laske taulukon arvot
  5. Lue Array Values ​​by Loop
  6. Lue taulukon erityiset arvot
  7. Lisää taulukon arvot
  8. Lue tiedoston sisältö taulukkoon
  9. Yhdistä taulukon arvot
  10. Muokkaa taulukon arvoja
  11. Poista taulukon arvot
  12. Etsi ja korvaa taulukon arvot
  13. Käytä taulukkoa funktion argumenttina
  14. Palauta taulukko funktiosta
  15. Tee taulukko tyhjäksi

Määritä taulukko indeksillä

Menetelmä taulukon ilmoittamiseksi mainitsemalla peräkkäiset tai ei-peräkkäiset numeeriset indeksit on esitetty seuraavassa skriptissä. Tämän tyyppistä taulukkoa kutsutaan numeeriseksi taulukoksi. Tässä '$books' -taulukko luodaan määrittämällä kolme peräkkäistä indeksiä ja '$products' -taulukko määrittämällä neljä ei-peräkkäistä indeksiä. Molempien taulukoiden kaikki arvot tulostetaan 'printf'-funktiolla.







#!/bin/bash

#Määritä taulukkoindeksi peräkkäisessä järjestyksessä

kirjat [ 0 ] = 'Learning the bash Shell'

kirjat [ 1 ] = 'Cybersecurity Ops with bash'

kirjat [ 2 ] = 'Bash Command Line Pro -vinkkejä'

kaiku 'Ensimmäisen taulukon kaikki arvot:'

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

#Määritä taulukkoindeksi ei-peräisessä järjestyksessä

Tuotteet [ 10 ] = 'Kynä'

Tuotteet [ 5 ] = 'Lyijykynä'

Tuotteet [ 9 ] = 'Rular'

Tuotteet [ 4 ] = 'A4 kokoinen paperi'

kaiku

kaiku 'Kaikki toisen taulukon arvot:'

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

Lähtö :



Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Molempien taulukoiden arvot tulostetaan tulosteeseen. Indeksijärjestys säilyy tulostettaessa ei-peräkkäisten indeksien joukolle:



  p1





Mennä huipulle

Määritä taulukko, jossa on useita arvoja

Numeerinen taulukko, jossa on useita arvoja, voidaan ilmoittaa käyttämällä 'declare'-komentoa optiolla -a tai ilman 'declare'-komentoa. Seuraavassa skriptissä ensimmäinen matriisi määritellään 'declare'-komennolla ja toinen matriisi luodaan ilman 'declare'-komentoa.



#!/bin/bash

#Declare numeerinen taulukko 'declare'-avainsanalla

julistaa -a nimet = ( 'Michael' 'David' 'Aleksanteri' 'Tomas' 'Robert' 'Richard' )

#Tulosta taulukon arvot

kaiku 'Ensimmäisen taulukon kaikki arvot:'

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

#Declare numeerinen taulukko ilman 'declare'-avainsanaa

kirjat = ( 'Shell Scripting Tutorials' 'Bish Bash Bosh!' 'Opi Bash nopeasti' )

#Lisää rivinvaihto

kaiku

#Tulosta taulukon arvot

kaiku 'Kaikki toisen taulukon arvot:'

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

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Molempien taulukoiden arvot tulostetaan tähän:

  p2

Mennä huipulle

Määrittele assosiatiivinen taulukko

Joukkoa, joka sisältää merkkijonon arvon indeksinä, kutsutaan assosiatiiviseksi taulukoksi. Vaihtoehtoa -A käytetään Bashin 'declare'-komennon kanssa assosiatiivisen Bash-taulukon luomiseen. Seuraavassa skriptissä ensimmäinen assosiatiivinen matriisi ilmoitetaan mainitsemalla indeksit erikseen ja toinen matriisi mainitaan kaikki avainarvoparit taulukon määrittelyhetkellä.

#!/bin/bash

#Ilmoita assosiatiivinen taulukkomuuttuja ilman arvoa

julistaa -A työntekijä

#Anna arvo erikseen määrittämällä indeksi

työntekijä [ 'id' ] = '78564'

työntekijä [ 'nimi' ] = 'Näyttelijät saatavilla'

työntekijä [ 'lähettää' ] = 'TOIMITUSJOHTAJA'

työntekijä [ 'palkka' ] = 300 000

#Tulosta kaksi taulukon arvoa

kaiku 'Henkilöstökortti: ${employee[id]} '

kaiku 'Työntekijän nimi: ${employee[name]} '

#Ilmoita assosiatiivinen taulukko arvoilla

julistaa -A tietenkin = ( [ koodi ] = 'CSE-206' [ nimi ] = 'Olio-ohjelmointi' [ luotto_tunti ] = 2.0 )

#Lisää rivinvaihto

kaiku

#Tulosta kaksi taulukkoarvoa toisesta taulukosta

kaiku 'Kurssin nimi: ${kurssi[nimi]} '

kaiku 'Luottoaika: ${course[credit_hour]} '

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Assosiatiivisen taulukon tietyt arvot tulostetaan tähän mainitsemalla avain- tai indeksiarvo:

  p3

Mennä huipulle

Laske taulukon arvot

Numeerisen taulukon ja assosiatiivisen taulukon kokonaiselementtien laskentatapa on esitetty seuraavassa skriptissä:

#!/bin/bash

#Ilmoita numeerinen taulukko

julistaa -a nimet = ( 'Michael' 'David' 'Aleksanteri' 'Tomas' 'Robert' 'Richard' ) ;

kaiku 'Numeerisen taulukon pituus on ${#names[@]} '

#Ilmoita assosiatiivinen taulukko

julistaa -A tietenkin = ( [ koodi ] = 'CSE-206' [ nimi ] = 'Olio-ohjelmointi' [ luotto_tunti ] = 2.0 )

kaiku 'Assosiatiivisen taulukon pituus on ${#kurssi[@]} '

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Numeeristen ja assosiatiivisten taulukoiden taulukon pituus tulostetaan tähän:

  p4

Mennä huipulle

Lue Array Values ​​by Loop

Menetelmä numeerisen taulukon ja assosiatiivisen taulukon kaikkien arvojen lukemiseksi 'for'-silmukan avulla on esitetty seuraavassa skriptissä:

#!/bin/bash

#Ilmoita numeerinen taulukko

julistaa -a kirjat = ( 'Shell-komentosarjan opetusohjelmat' 'Bish Bash Bosh!' 'Opi Bash nopeasti' )

#Tulosta numeeriset taulukon arvot

kaiku 'Numeeriset taulukon arvot ovat:'

varten sisään sisään ' ${books[@]} '

tehdä

kaiku ' $in '

tehty

kaiku

#Ilmoita assosiatiivinen taulukko arvoilla

julistaa -A asiakkaita = (

[ id ] = 'H-5623'

[ nimi ] = 'Herra. Ahnaf'

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

[ puhelin ] = '+8801975642312' )

#Tulosta assosiatiivisen taulukon arvot

kaiku 'Assosiatiiviset taulukon arvot ovat:'

varten k sisään ' ${!clients[@]} '

tehdä

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

tehty

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Tässä tulostetaan numeerisen taulukon arvot ja assosiatiivisen taulukon avainarvoparit:

  p5

Mennä huipulle

Lue taulukon tietty arvoalue

Indeksien tietyn alueen matriisiarvot näkyvät seuraavassa skriptissä. Skriptissä on määritelty neljän elementin numeerinen taulukko. Kaksi taulukon arvoa taulukon toisesta indeksistä tulostetaan myöhemmin.

#!/bin/bash

#Ilmoita numeerinen taulukko

julistaa -a kakut = ( 'Suklaakakku' 'Vaniljakakku' 'Red Velvet Cake' 'mansikkakakku' )

#Tulosta tietyt taulukon arvot

kaiku 'Matriisiarvojen 2. ja 3. elementti ovat:'

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

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Taulukon toinen ja kolmas arvo ovat 'Vanilla Cake' ja 'Red Velvet Cake', jotka tulostetaan:

  p6

Mennä huipulle

Lisää taulukon arvot

Menetelmä useiden arvojen lisäämiseksi taulukon loppuun on esitetty seuraavassa skriptissä. Päätaulukko, joka on '$books', sisältää kolme elementtiä ja kaksi elementtiä lisätään '$books' -taulukon loppuun.

#!/bin/bash

#Ilmoita numeerinen taulukko

julistaa -a kirjat = ( 'Shell-komentosarjan opetusohjelmat' 'Bish Bash Bosh!' 'Opi Bash nopeasti' )

#Tulosta taulukon arvot ennen lisäämistä

kaiku 'Matriisiarvot:'

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

kaiku

kirjat = ( ' ${books[@]} ' 'Linuxin komentorivi ja Shell Scripting Bible' 'Mendel Cooperin Advanced Bash Scripting Guide' )

#Tulosta taulukon arvot lisäämisen jälkeen

kaiku 'Matriisiarvot kahden arvon lisäämisen jälkeen:'

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

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Matriisiarvot ennen uusien arvojen lisäämistä ja sen jälkeen tulostetaan tulosteeseen:

  p7

Mennä huipulle

Lue tiedoston sisältö taulukkoon

Luo tekstitiedosto nimeltä 'fruits.txt', jossa on seuraava sisältö testataksesi tämän esimerkin komentosarjaa:

hedelmät.txt

Mango

Jackfruit

Ananas

Oranssi

Banaani

Seuraavassa skriptissä tiedoston sisältö on tallennettu taulukkoon nimeltä '$data'. Täällä jokainen tiedoston rivi tallennetaan taulukon jokaisena elementtinä. Seuraavaksi tulostetaan taulukon arvot.

#!/bin/bash

#Lue tiedostonimi käyttäjältä

lukea -s 'Anna tiedostonimi:' Tiedoston nimi

jos [ -f $tiedostonimi ]

sitten

#Lue tiedoston sisältö taulukkoon'

tiedot = ( ` kissa ' $tiedostonimi ' ` )

kaiku 'Tiedoston sisältö on annettu alla:'

#Lue tiedosto rivi riviltä

varten linja sisään ' ${data[@]} '

tehdä

kaiku $rivi

tehty

olla

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. 'Cat'-komennon näyttämä tulos ja komentosarjan tulos ovat samankaltaisia, koska 'cat'-komento ja komentosarja käyttävät samaa tiedostoa:

  p8

Mennä huipulle

Yhdistä taulukon arvot

Uusi taulukko luodaan yhdistämällä useiden taulukoiden arvot. Seuraavassa komentosarjassa on määritelty kaksi numeerista merkkijonotaulukkoa. Sitten luodaan uusi taulukko yhdistämällä näiden taulukoiden arvot.

#!/bin/bash

#Ilmoita ensimmäinen taulukko

julistaa -a nimilista1 = ( 'Michael' 'David' 'Aleksanteri' 'Tomas' )

kaiku 'Ensimmäiset taulukon arvot ovat:'

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

kaiku

#Ilmoita toinen taulukko

julistaa -a nimilista2 = ( 'Robert' 'Richard' )

kaiku 'Toiset taulukon arvot ovat:'

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

kaiku

#Luo uusi taulukko yhdistämällä kaksi taulukkoa

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

kaiku 'Yhdistetyt taulukon arvot ovat:'

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

kaiku

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Tässä tulosteeseen tulostetaan kolmen taulukon arvot. Kolmas taulukko sisältää kaikki ensimmäisen ja toisen taulukon arvot:

  p9

Mennä huipulle

Muokkaa taulukon arvoja

Menetelmä yhden tai useamman taulukon arvon päivittämiseksi mainitsemalla indeksi näkyy seuraavassa komentosarjassa:

#!/bin/bash

#Ilmoita ensimmäinen taulukko

julistaa -a nimilista = ( 'Michael' 'David' 'Aleksanteri' 'Tomas' )

kaiku 'Matriisiarvot:'

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

kaiku

#Päivitä taulukon toinen arvo

nimilista [ 1 ] = 'Robert'

kaiku 'Matriisiarvot päivityksen jälkeen:'

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

kaiku

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Päätaulukon ja päivitettyjen taulukoiden arvot tulostetaan:

  p10

Poista taulukon arvot

'Unset' -komentoa käytetään poistamaan tietty elementti tai kaikki taulukon elementit. Seuraavassa skriptissä taulukon toinen elementti poistetaan.

#!/bin/bash

#Ilmoita numeerinen taulukko

julistaa -a kirjat = ( 'Shell-komentosarjan opetusohjelmat' 'Bish Bash Bosh!' 'Opi Bash nopeasti' )

#Tulosta taulukon arvot ennen poistamista

kaiku 'Matriisiarvot:'

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

kaiku

#Poista toinen elementti

pois päältä kirjat [ 1 ]

#Tulosta taulukon arvot poistamisen jälkeen

kaiku 'Matriisiarvot toisen arvon poistamisen jälkeen:'

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

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Päätaulukon arvot ja taulukon arvot yhden arvon poistamisen jälkeen tulostetaan:

  p11

Mennä huipulle

Etsi ja korvaa taulukon arvot

Seuraavassa komentosarjassa taulukon tietty arvo korvataan toisella arvolla, jos mallissa määritetty hakuarvo vastaa mitä tahansa '$names' -taulukon arvoa.

#!/bin/bash

#Ilmoita ensimmäinen taulukko

julistaa -a nimet = ( 'Michael' 'David' 'Aleksanteri' 'Tomas' )

#Tulosta alkuperäiset taulukon arvot

kaiku 'Alkuperäiset taulukon arvot:'

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

#Luo merkkijono taulukon arvojen vaihtamisen jälkeen

updated_array = ${names[@]/Alexander/Richard}

#Tulosta taulukon arvot vaihdon jälkeen

kaiku 'Matriisiarvot korvauksen jälkeen:'

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

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Päätaulukon arvot ja taulukon arvot arvon korvaamisen jälkeen tulostetaan:

  p12

Mennä huipulle

Käytä taulukkoa funktion argumenttina

Seuraavassa skriptissä taulukon muuttuja välitetään funktion argumenttina ja tämän taulukon arvot tulostetaan myöhemmin.

#!/bin/bash

#Ilmoita joukko numeroita

julistaa -a numeroita = ( 10 6 Neljä viisi 13 8 )

#Määritä funktio, joka ottaa argumentin arvon

func ( )

{

#Lue ensimmäinen argumentti

numeroita = $1

#Tulosta taulukon arvot

kaiku 'Matriisiarvot:'

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

}

#Kutsu funktiota taulukon argumenttina

func ' ${numbers[@]} '

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen:

  p13

Mennä huipulle

Palauta taulukko funktiosta

Seuraavassa skriptissä funktiota kutsutaan neljällä numeerisella argumentilla. Argumenttiarvoilla luodaan taulukko, joka palautetaan funktiosta kutsujalle.

#!/bin/bash

#Määritä funktio, joka lukee neljä argumenttiarvoa

func ( )

{

#Lue argumentin arvot

numeroita = ( $1 2 dollaria 3 dollaria 4 dollaria )

#Palauta taulukko

kaiku ' ${numbers[@]} '

}

#Kutsu funktiota kolmella argumentilla

paluuarvo =$ ( func 78 Neljä viisi 90 23 )

#Tallenna palautusarvo taulukkoon

lukea -a yhdellä <<< $palautusarvo

#Tulosta palautetun taulukon arvot

kaiku 'Matriisin arvot ovat:'

varten sisään sisään ' ${num[@]} '

tehdä

kaiku ' $in '

tehty

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen:

Mennä huipulle

Tee taulukko tyhjäksi

Seuraava komentosarja näyttää tavan tehdä taulukko tyhjäksi 'unset'-komennolla. Taulukon arvojen kokonaismäärä tulostetaan ennen taulukon tyhjentämistä ja sen jälkeen.

#!/bin/bash

#Ilmoita joukko numeroita

julistaa -a numeroita = ( 10 6 Neljä viisi 13 80 )

kaiku 'Matriisiarvojen lukumäärät: ${#numbers[@]} '

#Tee taulukko tyhjäksi

pois päältä numeroita

kaiku 'Matriisiarvojen määrä taulukon tyhjennyksen jälkeen: ${#numbers[@]} '

Lähtö :

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Taulukon elementtien lukumääräksi tuli 0, kun taulukko oli tyhjennetty:

  p15

Mennä huipulle

Johtopäätös

Tässä opetusohjelmassa esitetään 15 yksinkertaisen esimerkin avulla erilaisia ​​tapoja ilmoittaa, käyttää, muokata ja poistaa taulukkomuuttujia Bash-komentosarjassa. Toivomme, että tämä opetusohjelma auttaa Bash-käyttäjiä tuntemaan Bash-taulukon käyttötarkoitukset yksityiskohtaisesti.