Android

Bash nizovi

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Sadržaj:

Anonim

Nizovi su jedna od najčešće korištenih i temeljnih struktura podataka. Možete misliti kako je niz varijabla koja unutar nje može pohraniti više varijabli., pokrit ćemo Bash nizove i objasniti ih kako ih koristiti u svojim Bash skriptama.

Bash Arrays

Bash podržava jednodimenzionalno numerički indeksirane i asocijativne tipove nizova. Numerički se nizi odnose na cijele brojeve, a asocijativni se koriste nizovima.

Numerički indeksiranim nizovima može se pristupiti s kraja pomoću negativnih indeksa, indeks -1 odnosi se na posljednji element. Indeksi ne moraju biti međusobni.

Za razliku od većine programskih jezika, Bash elementi elemenata ne moraju biti iste vrste podataka. Možete stvoriti niz koji sadrži i nizove i brojeve.

Bash ne podržava višedimenzionalne nizove i ne možete imati elemente niza koji su također nizovi.

Ne postoji ograničenje maksimalnog broja elemenata koji se mogu pohraniti u niz.

Stvaranje Bash nizova

Nizovi u Bashu mogu se inicijalizirati na različite načine.

Izrada numerički indeksiranih nizova

Bash varijable nisu tipizirane, bilo koja varijabla može se koristiti kao indeksirani niz bez deklariranja.

Da biste izričito deklarirali niz, upotrijebite deklariranje izgrađen:

declare -a array_name

Jedan od načina stvaranja indeksiranog niza je upotreba sljedećeg obrasca:

array_name=value_1 array_name=value_2 array_name=value_n

Gdje je index_* pozitivni cijeli broj.

Drugi način stvaranja numeričkog niza je odrediti popis elemenata u zagradama odvojenih praznim prostorom:

array_name=(element_1 element_2 element_N)

Kad se niz stvori pomoću gornjeg oblika, indeksiranje započinje s nulom tj. Prvi element ima indeks 0 .

Izrada asocijativnih nizova

Za razliku od numerički indeksiranih, asocijativni nizovi moraju se objaviti prije nego što se mogu koristiti.

Za deklariranje asocijativnog niza upotrijebite declare izgrađeno s opcijom -A (velika slova):

declare -A array_name

Asovativni nizovi se mogu stvoriti pomoću sljedećeg oblika:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Gdje index_* može biti bilo koji niz.

Također možete stvoriti asocijativni niz pomoću donjeg obrasca:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Operacije polja

Sintaksa Bash nizova u početku može izgledati pomalo čudno, ali više će imati smisla kad pročitate ovaj članak.

Referentni elementi

Za referencu na jedan element, morate znati indeks elemenata.

Na bilo koji element može se uputiti pomoću sljedeće sintakse:

${array_name} Sintaksa za pristup elementu polja slična je sintaksi većine programskih jezika. Valoviti zagrade ${} potrebni su za izbjegavanje operatora proširenja naziva ljuske datoteke.

Ispišimo element s indeksom 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Jedina razlika između @ i * je kada je obrazac ${my_array} okružen dvostrukim navodnicima. U ovom se slučaju * širi na jednu riječ gdje su elementi niza odvojeni s razmakom. @ proširuje svaki element polja u zasebnu riječ. To je posebno važno kada se obrazac koristi za nepismeno izradu elemenata niza.

Za ispis ključeva polja dodajte ! operator prije naziva niza:

${!array_name}

Evo primjera:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Duljina niza

Da biste dobili duljinu matrice, koristite sljedeći obrazac:

${#array_name} Sintaksa je ista kao kada se referenciraju svi elementi s dodavanjem znaka # prije naziva niza.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Pregledajte niz

Najčešći način ponavljanja svake stavke u nizu je pomoću petlje za:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

Gornji kôd će ponoviti preko matrice i ispisati svaki element u novom retku:

Hydrogen Helium Lithium Beryllium

Evo primjera kako ispisati sve ključeve i vrijednosti:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Drugi način za preskakanje kroz niz je dobivanje duljine polja i korištenje petlje u C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Dodajte novi element

Da biste dodali novi element u bash niz i odredili njegov indeks, koristite sljedeći obrazac:

my_array="New Element"

Evo primjera:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Drugi način dodavanja novog elementa u niz bez navođenja indeksa je upotreba operatora += . Možete dodati jedan ili više elemenata:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Izbrišite element

Da biste izbrisali jedan element, morat ćete znati indeks elemenata. Element se može ukloniti pomoću naredbe za uklanjanje:

unset my_array

Pogledajmo primjer:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Zaključak

Objasnili smo kako stvoriti numerički indeksirane i asocijativne nizove. Također smo pokazali kako iterati kroz nizove, izračunati duljinu polja i dodati i ukloniti elemente.

bash terminal