Android

Bash-matriser

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Innholdsfortegnelse:

Anonim

Arrays er en av de mest brukte og grunnleggende datastrukturer. Du kan tenke på at en matrise er en variabel som kan lagre flere variabler i den., vil vi dekke Bash-matriser, og forklare hvordan du bruker dem i Bash-skriptene dine.

Bash Arrays

Bash støtter endimensjonalt numerisk indekserte og assosiative matriser. Det henvises til numeriske matriser ved hjelp av heltall, og assosiative refereres til ved hjelp av strenger.

Du kan få tilgang til numerisk indekserte matriser fra slutten ved hjelp av negative indekser, indeksen på -1 refererer til det siste elementet. Indeksene trenger ikke være sammenhengende.

I motsetning til de fleste programmeringsspråk, trenger ikke Bash-elementer å være av samme datatype. Du kan lage en matrise som inneholder både strenger og tall.

Bash støtter ikke flerdimensjonale matriser, og du kan ikke ha matriseelementer som også er matriser.

Det er ingen begrensning for det maksimale antall elementer som kan lagres i en matrise.

Opprette Bash Arrays

Arrays in Bash kan initialiseres på forskjellige måter.

Opprette numerisk indekserte matriser

Bash-variabler er ikke-skrevet, alle variabler kan brukes som en indeksert matrise uten å erklære den.

For å eksplisitt deklarere en matrise, bruk erklæringen innebygd:

declare -a array_name

En måte å lage en indeksert matrise på er ved å bruke følgende skjema:

array_name=value_1 array_name=value_2 array_name=value_n

Hvor index_* er et positivt heltall.

En annen måte å opprette en numerisk matrise på er å spesifisere listen over elementene i parentes, atskilt med tom plass:

array_name=(element_1 element_2 element_N)

Når matrisen opprettes ved hjelp av skjemaet over, starter indeksering på null, dvs. det første elementet har en indeks på 0 .

Opprette assosiative matriser

I motsetning til numerisk indeksert, må de tilknyttede matriser deklareres før de kan brukes.

For å erklære et assosiativt utvalg bruker du declare innebygd med alternativet -A (store bokstaver):

declare -A array_name

Assosiative matriser kan opprettes ved hjelp av følgende skjema:

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

Hvor index_* kan være en hvilken som helst streng.

Du kan også opprette en assosiativ matrise ved å bruke skjemaet nedenfor:

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

Array Operations

Syntaks for basarrayer kan se litt rart ut i starten, men det vil være mer fornuftig når du har lest denne artikkelen.

Referanseelementer

For å referere til et enkelt element, må du kjenne til elementindeksen.

Ethvert element kan refereres til ved hjelp av følgende syntaks:

${array_name} Syntaks for tilgang til et arrayelement ligner syntaks for de fleste programmeringsspråk. De krøllete selene ${} er påkrevd for å unngå skallets utvidelsesoperatører.

La oss skrive ut elementet med indeks på 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

Den eneste forskjellen mellom @ og * er når skjemaet ${my_array} er omgitt av dobbelt sitater. I dette tilfellet utvides * til et enkelt ord der matriseelementer skilles med mellomrom. @ utvider hvert arrayelement til et eget ord. Dette er spesielt viktig når du bruker skjemaet til å analfabeter gjennom matriseelementer.

Hvis du vil skrive ut nøklene til matrisen, legger du til ! operatør før array-navnet:

${!array_name}

Her er et eksempel:

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

0 1 2 3

Array Lengde

For å få lengden på en matrise bruker du følgende skjema:

${#array_name} Syntaksen er den samme som når du refererer til alle elementer med tillegg av tegnet # før matrisenavnet.

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

4

Sløyfe gjennom matrisen

Den vanligste måten å iterere over hvert element i en matrise er ved å bruke for-loopen:

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

Koden over itererer over matrisen og skriver ut hvert element i en ny linje:

Hydrogen Helium Lithium Beryllium

Her er et eksempel på hvordan du skriver ut alle nøkler og verdier:

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

En annen måte å sløyfe gjennom en matrise er å få lengden på matrisen og bruke C style stilløkken:

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

Legg til et nytt element

For å legge til et nytt element i en bash array og spesifisere indeksen bruker du følgende skjema:

my_array="New Element"

Her er et eksempel:

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

En annen måte å legge til et nytt element til en matrise uten å spesifisere indeksen er ved å bruke += operatoren. Du kan legge til ett eller flere elementer:

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

Slett et element

Hvis du vil slette et enkelt element, må du kjenne til elementindeksen. Et element kan fjernes ved å bruke unset kommandoen:

unset my_array

La oss se et eksempel:

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

Hydrogen Helium Beryllium

Konklusjon

Vi har forklart hvordan du lager numerisk indekserte og assosiative matriser. Vi har også vist hvordan du itererer gjennom matriser, beregne matrellengden og legge til og fjerne elementer.

bash terminal