Kot večina programskih jezikov se morajo skripti bash včasih ukvarjati s seznamom povezanih vrednosti. Najenostavnejša oblika je standardni niz.

V bash je programiranje nizov precej drugačno, zlasti kar zadeva sintakso. Bash nizi so tudi strogo enodimenzionalni, vendar imajo še vedno veliko uporab.

Osnovna sintaksa nizov Bash

Ustvarjanje matrike v bash je preprosto. Celotno matriko lahko inicializirate z oklepaji, na primer:

city=(London Pariz Milan "New York")

(Vso kodo iz tega primera mesta najdete v ta GitHub Gist.)

To ustvari matriko, ki vsebuje štiri elemente, indeksirane od 0 do 3. Upoštevajte, da je četrta vrednost niz v narekovajih, sestavljen iz dveh besed. Za pojasnitev, da niso ločene vrednosti, boste morali navesti vrednosti, ki vsebujejo presledke.

Do enega elementa lahko dostopate s sintakso oklepajev, ki je običajna v programskih jezikih:

mesto[2]

Ker je to bash, boste potrebovali nekaj izboljšav, da dejansko uporabite vrednost v izrazu:

  • Pred znakom dolarja boste morali dodati ($) na ime spremenljivke.
  • instagram viewer
  • Prav tako boste morali uporabiti naramnice ({}), da bo ime spremenljivke nedvoumno. Privzeto bo obravnaval bash $city[2] kot spremenljivka z imenom mesto. Dodajte oklepaje, da bash sporočite, naj oceni tudi oklepaje in indeksno številko.

Standardna sintaksa za dostop do niza bash je potem:

${variable_name[index]}

Tukaj je popoln primer:

#!/bin/bash

city=(London Pariz Milan "New York")
odmeva ${city[3]}

# New York

Namesto da inicializirate matriko naenkrat, ji lahko dodelite korak za korakom. Ta skript je daljši ekvivalent prejšnjega primera:

#!/bin/bash

mesto[0]=London
mesto[1]=Pariz
mesto[2]=Milano
mesto[3]="New York"
odmeva ${city[3]}

# New York

Upoštevajte, da morate v obeh primerih paziti, da ne dodate presledka okoli znaka enakosti. “city[0] = London” s presledki okoli znaka enakosti bo ustvarilo napako.

Več uporab za nize Bash

Nizi so kot nalašč za shranjevanje povezanih podatkov. Tukaj je (zelo omejen) skript lupine, da dobite kvadratni koren števila:

#!/bin/bash

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

odmev ${sqrt[$1]}

Upoštevajte, da skript uporablja vrednost $1 kot indeks matrike. $1 predstavlja prvi argument ukazne vrstice, ki ga prejme skript, zato lahko ta skript zaženete takole:

$ ./sqrt.sh 9
3

Morda se zavedate $(cmd) sintakso, da izvedete ukaz in shranite njegov izhod v spremenljivko. To lahko kombinirate s sintakso inicializacije matrike, da dobite niz datotek za delo:

arr=( $(ls) )

Niz je pogosto popolna podatkovna struktura za ponavljanje in Bash ni izjema. Lahko se pomaknete skozi matriko, da natisnete vsak element ali izvedete operacijo na vsakem članu.

Lahko naslovite polje v a za.. v zanka, da preberete njegovo vsebino. Tukaj je na primer preprosta zanka, ki natisne število vrstic v vsaki datoteki v matriki prir:

za datoteko v "${arr[@]}"; narediti
wc -l "$file"
Končano

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

Upoštevajte, da ta vzorec uporablja @ simbol za pridobivanje vseh elementov iz matrike.

Več sintakse niza Bash

Število elementov v nizu lahko dobite z naslednjim:

odmeva ${#city[@]}

# 4

Na konec standardnega niza lahko dodate nov element tako:

arr+=(4)

Torej, če želite na seznam dodati peto mesto:

mesto+=(Rim)
odmeva ${city[@]}

# London Pariz Milano New York Rim

Če želite izvleči kos matrike, lahko uporabite sintakso, ki približa operaciji rezine mnogih drugih jezikov:

${arr[@]:s: n}

Ta sintaksa bo vrnila rezino matrike, ki se začne na položaju s in vsebuje n predmetov. Lahko izpustite :n del, iz katerega izvlečete vse predmete s do konca seznama.

odmeva ${city[@]:2:2}
# Milan New York

odmeva ${city[@]:3}
# New York Rim

Bash ima veliko funkcij, le nekaj se jih je treba naučiti

Nizi v bash imajo lahko omejitve, vendar ponujajo enako osnovno funkcionalnost kot večina programskih jezikov. Čeprav je bash v preteklosti podpiral le preproste enodimenzionalne nize, se časi spreminjajo. Najnovejša različica bash, 4, podpira asociativne nize in negativno indeksiranje nizov.

Ne glede na to, katero različico bash uporabljate, je pomembno razumeti njene nianse. Tudi običajna spremenljivka sintaksa ima veliko posebnosti.

Razložene spremenljivke Bash: preprost vodnik s primeri

Preberite Naprej

DelitiTweetDelitiE-naslov

Povezane teme

  • Programiranje
  • Linux
  • Programiranje
  • Linux Bash Shell
  • Skriptiranje

O avtorju

Bobby Jack (71 objavljenih člankov)

Bobby je tehnološki navdušenec, ki je večino dveh desetletij delal kot razvijalec programske opreme. Pri MUO je mlajši urednik oddelka za programiranje. Navdušen je nad igranjem iger, dela kot glavni urednik pri reviji Switch Player Magazine in je potopljen v vse vidike spletnega založništva in spletnega razvoja.

Več od Bobbyja Jacka

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite