Tutvuge Bashi massiividega – kuidas neid deklareerida, nendega manipuleerida ja kustutada.

Massiivid on andmesalved, mida kasutatakse väärtuste hoidmiseks, millel on üksteisega mingi seos. Erinevalt enamikust programmeerimiskeeltest suudavad Bashi massiivid salvestada samasse massiivi eri andmetüüpide väärtusi.

Bashil on kahte tüüpi massiive: indekseeritud massiivid ja assotsiatiivsed massiivid. Indekseeritud massiivide puhul algavad indeksid vahemikus 0 kuni (n-1), nagu enamikus keeltes tavaline. Bashi massiivid on aga hõredad. See tähendab, et saate määrata (n-1)-nda massiivi elemendi ilma (n-2)-ndat elementi määramata.

Sellest õpetusest saate teada, kuidas Bashis massiividega töötada. Alustame.

Massiivide määratlemine

Bashis saate massiive määratleda kolmel viisil. Sarnaselt Bashi muutujatele tuleb massiivid loomisel lähtestada. Ainus erand sellest on see, kui kasutate kuulutama märksõna. Samuti peate massiivi lähtestamisel veenduma, et määramisoperaatori kummalegi poolele ei jääks tühikut.

Esimene meetod on väärtuste liitmääramine massiivi nimele. Selleks on kaks võimalust.

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

Esimeses liitmääramises määratakse ümarsulgudes olevad väärtused järjestikku indeksist [0] juurde [3].

Teises aga omistatakse väärtused indeksile selles järjekorras, mille programmeerija on näidanud.

Seotud: Mis on keskkonnamuutujad Linuxis? Kõik, mida pead teadma

Kui panid tähelepanelikult tähele arr2, märkate seda indeksit [2] jäi välja. Massiiv luuakse ikkagi ilma vigadeta. See ülesanne on tegelikult Bashi massiivide vähese salvestusruumi demonstratsioon, nagu me varem puudutasime.

Pange tähele, et massiivi väärtusi ei eralda koma. Väärtused eraldatakse lihtsalt tühikutega.

Teine meetod deklareerib massiivi kaudselt. Võite lihtsalt alustada väärtuste määramist nullmassiivi elementidele:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

Kolmas viis on massiivi selgesõnaline deklareerimine märksõnaga kuulutama:

declare -a arrayName

Toimingud massiividel

Massiivielementidele juurdepääsuks kasutage järgmist süntaksit: ${array[index]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Kui peate selle asemel kogu massiivi välja printima, kasutage @ sümbolina

indeks kohta ${array[index]}:

echo${fruits[@]}

Massiivi elementide arvu väljaselgitamiseks kasutage # sümbol, nagu allpool näidatud:

echo ${#fruits[1]}

Võimalik, et peate muutma ka massiivi elemente – vaadake allolevat näidet selle kohta, kuidas seda teha. See sarnaneb uue elemendi lisamisega. Ainus erinevus seisneb selles, et asendate väärtuse indeksiga, millel on väärtus juba olemas.

fruits[1]=pears

Assotsiatiivsed massiivid

Massiivi, mille võtmeteks on suvalised väärtused, nimetatakse assotsiatiivseks massiiviks. Neid massiive kasutatakse seotud võtme-väärtuste paaride salvestamiseks.

Seotud: Kuidas muuta Bash-skriptid AppleScripti abil klõpsatavateks rakendusteks

Assotsiatiivse massiivi määratlemiseks peate seda tegema selgesõnaliselt märksõna abil kuulutama.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

Liikmeelemendile pääsete juurde samamoodi nagu indekseeritud massiividele:

echo${animal[lion]}

Kui soovite kõik väärtused välja printida, võite kasutada @ sümbol, nagu allpool näidatud:

echo${animal[@]}

Kui soovite kõik massiivi võtmed välja printida, võite kasutada @ ja ! sümbolid, nagu allpool näidatud:

echo${!animal[@]}

Assotsiatiivse massiivi elementide arvu leidmiseks kasutage sama süntaksit, mida kasutate indekseeritud massiivi puhul (näidatud viimases jaotises).

Kui soovite kustutada massiivi üksuse või kogu massiivi, kasutage allolevat süntaksit:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Printf käsu kasutamine

Võib-olla olete märganud, et kogu see artikkel kasutab kaja käsk andmete väljastamiseks kesta. The kaja käsk töötab selle õpetuse jaoks, kuid sellel on stringi vormindamisel vähe funktsioone ja paindlikkust.

Siiski, printf käsk pakub täpsemaid vormindamisvalikuid, mis muudavad Bashi skriptimise imelihtsaks. Õppimine printf funktsioon suurendab kindlasti teie stringivormingu kogemust ja tõhusust Bashis.