Nagu enamik programmeerimiskeeli, peavad bash-skriptid mõnikord tegelema seotud väärtuste loendiga. Lihtsaim vorm on standardmassiiv.

Bashis on massiivi programmeerimine üsna erinev, eriti kui tegemist on süntaksiga. Bashi massiivid on samuti rangelt ühemõõtmelised, kuid neil on siiski palju kasutusvõimalusi.

Bash-massiivide põhisüntaks

Massiivi loomine bashis on lihtne. Saate initsialiseerida terve massiivi kasutades sulgusid, näiteks:

linn=(London Paris Milan "New York")

(Kogu selle linna näite koodi leiate siit see GitHubi sisu.)

See loob neljast elemendist koosneva massiivi, mis on indekseeritud vahemikus 0 kuni 3. Pange tähele, et neljas väärtus on kahest sõnast koosnev tsiteeritud string. Peate tsiteerima tühikuid sisaldavaid väärtusi, et selgitada, et need ei ole eraldi väärtused.

Ühele elemendile pääsete juurde, kasutades programmeerimiskeeltes levinud sulgude süntaksit.

linn[2]

Kuna see on bash, on väärtuse avaldises kasutamiseks vaja paar täpsustust:

  • Peate lisama dollarimärgi ($) muutuja nimele.
  • Peate kasutama ka breketeid ({}), et muuta muutuja nimi üheselt mõistetavaks. Vaikimisi töötleb bash $city[2] muutujana nimega linn. Lisage sulgud, et käskida bashil hinnata ka sulgusid ja indeksi numbrit.

Standardne bash massiivi juurdepääsu süntaks on siis:

${muutuja_nimi[indeks]}

Siin on täielik näide:

#!/bin/bash

linn=(London Paris Milan "New York")
echo ${city[3]}

# New York

Selle asemel, et massiivi korraga lähtestada, saate selle määrata samm-sammult. See skript on eelmise näite pikem ekvivalent:

#!/bin/bash

city[0]=London
linn[1]=Pariis
linn[2]=Milano
linn[3]="New York"
echo ${city[3]}

# New York

Pange tähele, et mõlemal juhul peate olema ettevaatlik, et mitte lisada võrdusmärgi ümber tühikut. "linn[0] = London", kui võrdusmärgi ümber on tühikud, tekitab vea.

Rohkem Bashi massiivi kasutusvõimalusi

Massiivid sobivad suurepäraselt seotud andmete salvestamiseks. Siin on (väga piiratud) kestaskript, et saada arvu ruutjuur:

#!/bin/bash

sqrt[1]=1
sqrt[4]=2
sqrt[9] = 3
sqrt[16] = 4
sqrt[25] = 5

echo ${sqrt[$1]}

Pange tähele, et skript kasutab väärtust $1 massiiviindeksina. $1 tähistab esimest käsurea argumenti, mille skript vastu võtab, nii et saate seda skripti käivitada järgmiselt:

$ ./sqrt.sh 9
3

Võite olla teadlik $ (cmd) süntaks käsu täitmiseks ja selle väljundi salvestamiseks muutujasse. Saate selle kombineerida massiivi initsialiseerimise süntaksiga, et saada failide massiiv, millega töötada:

arr=( $(ls) )

Massiiv on sageli täiuslik andmestruktuur itereerimiseks ja Bash pole erand. Iga elemendi printimiseks või toimingu sooritamiseks iga liikmega võite liikuda läbi massiivi.

Saate adresseerida massiivi sisse a jaoks.. sisse silmus, et korrata selle sisu. Näiteks siin on lihtne tsükkel, mis prindib ridade arvu igas massiivi failis arr:

faili jaoks asukohas "${arr[@]}"; teha
wc -l "$ fail"
tehtud

# 3 envvars
# 547 httpd.conf
# ...

Pange tähele, et see muster kasutab ära @ sümbol, et tuua massiivist kõik elemendid.

Veel Bash Array süntaksit

Saate hankida massiivi üksuste arvu, kasutades järgmist.

kaja ${#city[@]}

# 4

Standardmassiivi lõppu saate lisada uue elemendi järgmiselt:

arr+=(4)

Nii et loendisse viienda linna lisamiseks:

linn+=(Rooma)
echo ${city[@]}

# London Pariis Milano New York Rooma

Massiivi osa eraldamiseks võite kasutada süntaksit, mis on ligikaudne paljude teiste keelte lõiguoperatsioonile.

${arr[@]:s: n}

See süntaks tagastab massiivi lõigu, mis algab positsioonist s ja sisaldavad n esemed. Võite vahele jätta :n osa kõigi üksuste eraldamiseks s nimekirja lõpuni.

echo ${city[@]:2:2}
# Milano New York

kaja ${city[@]:3}
# New York Rooma

Bashil on palju funktsioone, need nõuavad lihtsalt õppimist

Bashi massiividel võivad olla piirangud, kuid need pakuvad samu põhifunktsioone nagu enamik programmeerimiskeeli. Kuigi bash on ajalooliselt toetanud lihtsalt lihtsaid ühemõõtmelisi massiive, on ajad muutumas. Bashi uusim versioon 4 toetab assotsiatiivseid massiive ja negatiivse massiivi indekseerimist.

Olenemata sellest, millist bashi versiooni te kasutate, on oluline mõista selle nüansse. Isegi tavalisel muutuja süntaksil on palju eripärasid.

Bashi muutujate selgitamine: lihtne juhend näidetega

Loe edasi

JagaSäutsJagaMeil

Seotud teemad

  • Programmeerimine
  • Linux
  • Programmeerimine
  • Linux Bash Shell
  • Skriptimine

Autori kohta

Bobby Jack (71 avaldatud artiklit)

Bobby on tehnoloogiaentusiast, kes töötas tarkvaraarendajana enamuse kaks aastakümmet. MUO-s on ta programmeerimise sektsiooni nooremtoimetaja. Ta on kirglik mängude vastu, töötab ajakirja Switch Player peatoimetajana ning on sukeldunud kõigisse veebiavaldamise ja veebiarenduse aspektidesse.

Veel Bobby Jackilt

Liituge meie uudiskirjaga

Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!

Tellimiseks klõpsake siin