Uhvatite se u koštac s Bash nizovima — kako ih deklarirati, manipulirati njima i izbrisati ih.
Nizovi su spremišta podataka koja se koriste za čuvanje vrijednosti koje su međusobno povezane. Za razliku od većine programskih jezika, nizovi Bash mogu pohranjivati vrijednosti različitih vrsta podataka u istom polju.
Bash ima dvije vrste nizova: indeksirane nizove i asocijativne nizove. Za indeksirane nizove, indeksi počinju od 0 do (n-1), kao što je uobičajeno u većini jezika. Međutim, nizovi u Bashu su rijetki. To znači da možete dodijeliti (n-1)-ti element niza bez da ste dodijelili (n-2)-ti element.
U ovom ćete vodiču naučiti kako raditi s nizovima u Bashu. Započnimo.
Definiranje nizova
Postoje tri načina na koje možete definirati nizove u Bashu. Slično Bash varijablama, nizovi se moraju inicijalizirati pri stvaranju. Jedina iznimka od ovoga je ako koristite proglasiti ključna riječ. Također morate biti sigurni da nema mjesta s obje strane operatora dodjele dok inicijalizirate niz.
Prva metoda je složeno dodjeljivanje vrijednosti nazivu polja. Postoje dva načina za to:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
U prvom složenom dodjeljivanju, vrijednosti u okruglim zagradama dodjeljuju se sekvencijalno iz indeksa [0] do [3].
Međutim, u drugom slučaju, vrijednosti se dodjeljuju indeksu kojim god redom programer odredi.
Povezano: Što su varijable okruženja u Linuxu? Sve što trebate znati
Ako ste pažljivo primijetili arr2, primijetit ćete taj indeks [2] bio izostavljen. Niz će se i dalje stvarati bez ikakvih pogrešaka. Ova dodjela zapravo je demonstracija rijetke pohrane u Bash nizovima kao što smo ranije spomenuli.
Primijetite da nema zareza koji odvajaju vrijednosti polja. Vrijednosti su jednostavno odvojene razmacima.
Druga metoda neizravno deklarira niz. Možete jednostavno početi dodjeljivati vrijednosti nultim elementima niza:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
Treći način je eksplicitna deklaracija niza s ključnom riječi proglasiti:
declare -a arrayName
Operacije nad nizovima
Za pristup elementima niza koristite ovu sintaksu: ${niz[indeks]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Ako umjesto toga trebate ispisati cijeli niz, upotrijebite @ simbol kao
indeks od ${niz[indeks]}:
echo${fruits[@]}
Da biste saznali broj elemenata u nizu, koristite # simbol kao što je prikazano u nastavku:
echo ${#fruits[1]}
Možda ćete također trebati izmijeniti elemente niza—pogledajte primjer u nastavku kako to učiniti. To je slično dodavanju novog elementa. Jedina razlika je u tome što vrijednost zamjenjujete indeksom koji već ima vrijednost.
fruits[1]=pears
Asocijativni nizovi
Niz koji ima proizvoljne vrijednosti kao ključeve naziva se asocijativni niz. Ovi se nizovi koriste za pohranjivanje povezanih parova ključ-vrijednost.
Povezano: Kako pretvoriti Bash skripte u aplikacije koje se mogu kliknuti pomoću AppleScripta
Da biste definirali asocijativni niz, morate to učiniti eksplicitno pomoću ključne riječi proglasiti.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Elementu člana možete pristupiti na isti način na koji pristupate indeksiranim nizovima:
echo${animal[lion]}
Ako želite ispisati sve vrijednosti, možete koristiti @ simbol kao što je prikazano u nastavku:
echo${animal[@]}
Ako želite ispisati sve ključeve polja, možete koristiti @ i ! simboli kao što je prikazano u nastavku:
echo${!animal[@]}
Da biste pronašli broj elemenata asocijativnog niza, upotrijebite istu sintaksu koju biste koristili s indeksiranim nizovima (pokazano u zadnjem odjeljku).
Ako želite izbrisati stavku niza ili cijeli niz, upotrijebite donju sintaksu:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Korištenje naredbe printf
Možda ste primijetili da cijeli ovaj članak koristi jeka naredba za izlaz podataka u ljusku. The jeka naredba radi za ovaj vodič, ali ima nekoliko značajki i fleksibilnosti kada je u pitanju oblikovanje niza.
Međutim printf naredba nudi više specifičnih opcija oblikovanja koje Bash skriptiranje čine lakim. Učenje o printf sigurno će poboljšati vaše iskustvo oblikovanja niza i učinkovitost u Bashu.