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:

instagram viewer
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.