- Määritä taulukko indeksillä
- Määritä taulukko, jossa on useita arvoja
- Määrittele assosiatiivinen taulukko
- Laske taulukon arvot
- Lue Array Values by Loop
- Lue taulukon erityiset arvot
- Lisää taulukon arvot
- Lue tiedoston sisältö taulukkoon
- Yhdistä taulukon arvot
- Muokkaa taulukon arvoja
- Poista taulukon arvot
- Etsi ja korvaa taulukon arvot
- Käytä taulukkoa funktion argumenttina
- Palauta taulukko funktiosta
- 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:
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:
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:
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:
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:
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:
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:
Lue tiedoston sisältö taulukkoon
Luo tekstitiedosto nimeltä 'fruits.txt', jossa on seuraava sisältö testataksesi tämän esimerkin komentosarjaa:
hedelmät.txt
MangoJackfruit
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:
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:
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:
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:
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:
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:
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:
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:
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.