Bash Tutorial 6: Arrays
Innholdsfortegnelse:
- Bash Arrays
- Opprette Bash Arrays
- Opprette numerisk indekserte matriser
- Opprette assosiative matriser
- Array Operations
- Referanseelementer
- Array Lengde
- Sløyfe gjennom matrisen
- Legg til et nytt element
- Slett et element
- Konklusjon
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}"
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}
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}"
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 terminalMicrosoft Research Asia Hosts Gates på 10 år Bash

Microsoft Research Asia har vokst fra et dusin mennesker i 1998 til over 350 et tiår senere.
Slik kjører du Bash på Ubuntu på Windows 10

Aktivering av Windows Subsystem for Linux vil tillate deg å kjøre Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandolinjeverktøy, Linux-første verktøy.
Bash for loop

Det er tre grunnleggende sløyfekonstruksjoner i Bash-scripting, for loop, while loop og til loop. I denne opplæringen vil vi dekke det grunnleggende om for løkker i Bash så vel som bruddet og fortsette utsagn for å endre flyten i en loop.