Poput većine programskih jezika, bash skripte ponekad moraju imati posla s popisom povezanih vrijednosti. Najjednostavniji oblik je standardni niz.
U bash-u, programiranje nizova je sasvim drugačije, posebno kada je u pitanju sintaksa. Bash nizovi su također striktno jednodimenzionalni, ali još uvijek imaju dosta namjena.
Osnovna sintaksa Bash nizova
Stvaranje niza u bash-u je jednostavno. Možete inicijalizirati cijeli niz pomoću zagrada, na primjer:
city=(London Pariz Milan "New York")
(Svu šifru iz ovog primjera grada možete pronaći u ovaj GitHub Gist.)
Time se stvara niz koji sadrži četiri elementa, indeksirana od 0 do 3. Imajte na umu da je četvrta vrijednost niz navodnika koji se sastoji od dvije riječi. Morat ćete navesti vrijednosti koje sadrže razmake kako biste pojasnili da nisu zasebne vrijednosti.
Možete pristupiti jednom elementu pomoću sintakse zagrade koja je uobičajena u programskim jezicima:
grad[2]
Budući da je ovo bash, trebat će vam nekoliko poboljšanja da biste zapravo koristili vrijednost u izrazu:
- Morat ćete staviti ispred znaka dolara ($) na ime varijable.
- Također ćete morati koristiti proteze ({}) kako bi naziv varijable bio nedvosmislen. Prema zadanim postavkama, bash će tretirati $city[2] kao varijabla imenovana Grad. Dodajte zagrade da kažete bash-u da također procijeni zagrade i broj indeksa.
Standardna sintaksa za pristup nizu bash je tada:
${variable_name[index]}
Evo cjelovitog primjera:
#!/bin/bash
city=(London Pariz Milan "New York")
odjek ${city[3]}
# New York
Umjesto da inicijalizirate niz odjednom, možete mu dodijeliti korak po korak. Ova skripta je duži ekvivalent prethodnog primjera:
#!/bin/bash
grad[0]=London
grad[1]=Pariz
grad[2]=Milano
grad[3]="New York"
odjek ${city[3]}
# New York
Imajte na umu da u oba slučaja morate paziti da ne dodate razmak oko znaka jednakosti. "city[0] = London", s razmacima oko znaka jednakosti, generirat će pogrešku.
Više upotreba za Bash nizove
Nizovi su savršeni za pohranjivanje povezanih podataka. Evo (vrlo ograničene) shell skripte za dobivanje kvadratnog korijena broja:
#!/bin/bash
sqrt[1]=1
sqrt[4]=2
sqrt[9]=3
sqrt[16]=4
sqrt[25]=5
jeka ${sqrt[$1]}
Imajte na umu da skripta koristi vrijednost $1 kao indeks niza. $1 predstavlja prvi argument naredbenog retka koji skripta prima, tako da ovu skriptu možete pokrenuti na sljedeći način:
$ ./sqrt.sh 9
3
Možda ste svjesni $(cmd) sintaksu za izvršavanje naredbe i spremanje njezinog izlaza u varijablu. Ovo možete kombinirati sa sintaksom inicijalizacije niza kako biste dobili niz datoteka za rad:
arr=( $(ls) )
Niz je često savršena struktura podataka za ponavljanje a Bash nije iznimka. Možete proći kroz niz kako biste ispisali svaki element ili izvršili operaciju na svakom članu.
Možete adresirati niz u a za.. u petlja, za ponavljanje njegovog sadržaja. Na primjer, evo jednostavne petlje koja ispisuje broj redaka u svakoj datoteci u nizu arr:
za datoteku u "${arr[@]}"; čini
wc -l "$file"
učinjeno
# 3 envvars
# 547 httpd.conf
# ...
Imajte na umu da ovaj uzorak koristi @ simbol za dohvat svih elemenata iz niza.
Više sintakse Bash niza
Možete dobiti broj stavki u nizu koristeći sljedeće:
odjek ${#city[@]}
# 4
Možete dodati novi element na kraj standardnog niza na sljedeći način:
arr+=(4)
Dakle, da dodate peti grad na popis:
grad+=(Rim)
odjek ${city[@]}
# London Pariz Milano New York Rim
Da biste izdvojili dio niza, možete koristiti sintaksu koja aproksimira operaciju isječaka mnogih drugih jezika:
${arr[@]:s: n}
Ova sintaksa će vratiti dio niza koji počinje na poziciji s i koji sadrži n stavke. Možete izostaviti :n dio za izdvajanje svih stavki iz s do kraja liste.
odjek ${city[@]:2:2}
# Milano New York
odjek ${city[@]:3}
# New York Rim
Bash ima mnogo značajki, samo im je potrebno malo učenja
Nizovi u bash-u mogu imati ograničenja, ali nude istu osnovnu funkcionalnost kao i većina programskih jezika. Iako je bash kroz povijest podržavao samo jednostavne jednodimenzionalne nizove, vremena se mijenjaju. Najnovija verzija bash-a, 4, podržava asocijativne nizove i negativno indeksiranje nizova.
Koju god verziju basha koristite, važno je razumjeti njezine nijanse. Čak i normalna sintaksa varijable ima dosta idiosinkrazija.
Objašnjenje Bash varijable: Jednostavan vodič s primjerima
Pročitajte dalje
Povezane teme
- Programiranje
- Linux
- Programiranje
- Linux Bash Shell
- Skriptiranje
O autoru
Bobby je tehnološki entuzijast koji je većinu dva desetljeća radio kao programer softvera. U MUO-u je mlađi urednik za programsku sekciju. Strastven je za igranje igara, radi kao glavni urednik u Switch Player Magazinu i uronjen je u sve aspekte online izdavaštva i web razvoja.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu