Bash Scripting - Array

Bash Scripting - Array

Taulukot ovat tärkeitä käsitteitä ohjelmoinnissa tai komentosarjassa. Taulukkojen avulla voimme tallentaa ja hakea elementtejä luettelomuodossa, jota voidaan käyttää tiettyihin tehtäviin. Bashissa meillä on myös taulukoita, jotka auttavat meitä luomaan komentorivillä skriptejä tietojen tallentamiseksi luettelomuodossa. Tässä artikkelissa ymmärrämme bash-komentosarjan taulukoiden perusteet.

Arrayiden luominen

Perustaulukon luomiseksi bash-skriptissä voimme käyttää ilmoitusta -a komento ja sen jälkeen sen taulukkomuuttujan nimi, jonka haluat antaa.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) 

TAI

#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball 

Elementtien arvo voi olla mikä tahansa kokonaisluku tai merkkijono tai mikä tahansa muu haluttu tietomuoto. Voimme nähdä, että taulukko on ilmoitettu bash-komentosarjassa kahdella tavalla, edellinen näyttää kätevämmältä ja vähemmän hektiseltä ilmoittaa. Jos haluamme ilmoittaa taulukon kerralla, edellinen on optimaalinen valinta, mutta jos elementit lisätään bitteinä, jälkimmäinen on hyvä valinta.

Taulukon tulostaminen

Jos halusimme näyttää taulukon kaikki elementit taulukon ilmoittamisen jälkeen, voimme käyttää @-symbolia.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' 

echo '${array_name[@]}' 

Käytämme [@]-merkkiä taulukon indeksinä näyttääksemme kaikki elementit. Kaikki elementit tulostetaan välilyönnillä erotettuina. Muuttujan ympärillä olevat lainausmerkit laajenevat ja tulostavat kaikki taulukon elementit.

Iteroidaan Array:n yli

Iteroidaksesi taulukon yli elementti kerrallaan, voimme käyttää silmukoita ja suorittaa mitä tahansa toimintoja sen rungossa.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done 

Kuten näemme, olemme käyttäneet for-silmukkaa tulostaaksemme elementin taulukosta yksitellen. Olemme käyttäneet edellisen osan temppua hankkimalla kaikki taulukon elementit ja iteroimme sen yli yksitellen for-silmukassa. ${array_name[@]} laajenee kaikkiin taulukon elementteihin ja for-silmukka iteroi niitä yksitellen esimerkin iteraattorin kanssa, joka on muuttuja i , for-silmukan runkoon tulostetaan muuttuja/iteraattori i ja iteroi siten taulukon yli.

Hanki taulukon elementtien lukumäärä

Elementtien lukumäärän hakemiseksi taulukossa voimme käyttää #-operaattoria ennen taulukon nimeä s:ssä kohdassa ${array_name[@]}.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}' 

Palautamme siis taulukon koon komennolla ${#sport[@]}, #-merkillä saadaan viereisen muuttujan koko, lainausmerkeillä komennon arvo lasketaan ja saadaan haluttu määrä taulukon alkioita.

Elementin lisääminen taulukkoon

Elementin lisääminen on melko yksinkertaista, meidän on asetettava elementille sopiva indeksi ja sen jälkeen haluamasi elementin arvo.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}' 

Olemme lisänneet viidennen elementin (4. indeksi) taulukkoon ja myös muokannut/muokannut taulukon kolmatta elementtiä (2. indeksi). The taulukonnimi[indeksi]=arvo on kaikki temput taulukon elementtien lisäämiseen, muokkaamiseen tai alustamiseen.

Voimme myös lisätä elementtejä taulukkoon käyttämällä +=-operaattoria.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}' 

Kuten esimerkistä näkyy, voimme lisätä useita elementtejä taulukkoon minimaalisella koodilla. Käytämme komentoa taulukon_nimi+=(elementit) elementtien liittämiseen taulukkoon.

Elementin poistaminen Arraysta

Elementin poistamiseksi taulukosta voimme käyttää komentoa unset. Komento ottaa muuttujan nimeksi tässä tapauksessa taulukon nimen ja kyseisen elementin indeksin. Indeksi voi olla myös suhteellinen eli -1, joka osoittaa viimeistä elementtiä ja -2 toiseksi viimeiseksi ja niin edelleen.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}' 

Kuten voimme nähdä, unset arrayname[index] poistaa indeksissä olevan elementin taulukosta. Myös taulukon kokoa on pienennetty kolmeen neljästä, mikä osoittaa, että elementti on poistettu kokonaan eikä vain korvattu välilyönnillä.

Suhteellisten indeksien käyttö

Jos käytämme indeksejä kuten -1,-2 ja niin edelleen, elementit viitataan viimeisestä elementistä, joten voimme poistaa tai muokata niitä suhteellisella järjestyksellä myös takaa.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}' 

Kuten näemme, indeksiin 1 viitataan myös -3:na takaapäin, ja näin ollen on suhteellisen helpompi viitata tiettyihin elementteihin suuressa taulukossa.

Liitä taulukko

Voimme liittää (ottaa pois juoman) taulukon ja määrittää tai tulostaa sen toiselle muuttujalle/taulukolle.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}' 

Olemme poistaneet sport-taulukosta palan eli elementin indeksien 1 ja 3 väliltä ja osoittaneet sen arr-muuttujalle, joka on myös matriisi. @-operaattori saa kaikki elementit taulukosta ja sitten voimme jakaa taulukon indeksien 1 ja 3 välille niin, että saamme elementit kohdissa 1, 2 ja 3 (kriketti, jääkiekko ja pesäpallo) urheilutaulukosta.

Määritä staattinen taulukko ja tulosta taulukon elementit

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$ 

Staattisen taulukon elementtejä voidaan tulostaa kahdella tavalla

Ohjelman suoritus

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here 

Komentoriviargumenttien välittäminen komentosarjatiedostossa

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]} 

Yllä oleva skripti voidaan suorittaa muodossa

# Tässä Java, Python ja Ruby ovat komentoriviargumentteja

sh arrayCheck.sh Java Python Ruby 

Skriptin suoritusvaiheet:

programmingArray=(Java Python Ruby)

#Java tulee olemaan 0. indeksissä, sen koko voidaan laskea alla olevalla tavalla

${#programmingArray[0]}

Samoin Python on läsnä 1. indeksissä, sen koko voidaan laskea alla olevalla tavalla

${#programmingArray[1]}

Lähtö:

Matriisiarvojen iterointi käyttämällä for-silmukkaa

$@ antaa kaikki arvot, jotka on välitetty komentoriviargumenttien kautta, ja se tallennetaan taulukkoon.

Se voidaan iteroida käyttämällä for-silmukkaa

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done 

Lähtö:

Katsotaanpa nopeasti, mitä kukin symboli edustaa

Syntaksi

Lähtö
arr=()

arr[0]=3 Korvaa 1. elementti

arr+=(4) Liitä arvo(t)

str=$(ls) Tallenna ls-tuloste merkkijonona

arr=( $(ls) ) Tallenna ls-tuloste tiedostojoukona

${arr[@]:s:n} Hae n elementtiä alkaen indeksistä

#Voimme tarjota arvojoukon

kuten tämä

arr = (yksi kaksi kolme)

Matriisin alustamiseksi
${arr[0]} Ensimmäisen elementin hakeminen. Indeksi alkaa aina 0:lla
${arr[@]} Haetaan kaikki elementit ja sen jälkeen voimme iteroida silmukassa
${!arr[@]} Joukkoindeksien hakeminen yksin
${#arr[@]} Taulukon koon laskeminen
arr[2]=3 Korvaaksemme kolmannen elementin meidän on käytettävä sitä tällä tavalla. Koska indeksi alkaa 0:sta, arr[2] on oikein.
arr+=(40) Arvon (arvojen) liittämiseksi voimme käyttää + ja sitten määrittää =:llä, jolloin käytetään +=:ää.
str=$(ls) ls-komennon tulosteen tallentaminen merkkijonona (esimerkki 4 on esitetty tälle lähdölle)
arr=( $(ls) ) ls-tulosteen tallentaminen tiedostojonoksi (esimerkki 5 on esitetty tälle lähdölle)
${arr[@]:s:n} Haetaan n elementtiä indeksistä s alkaen