Bash Tutorial 6: Arrays
Innehållsförteckning:
- Bash Arrays
- Skapa Bash Arrays
- Skapa numeriskt indexerade matriser
- Skapa associerande matriser
- Array-operationer
- Referenselement
- Array Längd
- Slinga genom matrisen
- Lägg till ett nytt element
- Radera ett element
- Slutsats
Matriser är en av de mest använda och grundläggande datastrukturerna. Du kan tänka på att en matris är en variabel som kan lagra flera variabler i den., vi täcker Bash-matriserna och förklarar hur du använder dem i dina Bash-skript.
Bash Arrays
Bash stöder endimensionella numeriskt indexerade och associerande matriser. Numeriska matriser refereras med hjälp av heltal, och associerande refereras med strängar.
Numeriskt indexerade matriser kan nås från slutet med hjälp av negativa index, indexet
-1
refererar till det sista elementet. Indexen behöver inte vara sammanhängande.
Till skillnad från de flesta programmeringsspråk behöver Bash-arrayelement inte vara av samma datatyp. Du kan skapa en matris som innehåller både strängar och siffror.
Bash stöder inte flerdimensionella matriser, och du kan inte ha matriselement som också är matriser.
Det finns ingen gräns för det maximala antalet element som kan lagras i en matris.
Skapa Bash Arrays
Arrays in Bash kan initialiseras på olika sätt.
Skapa numeriskt indexerade matriser
Basvariabler är inte skrivna, alla variabler kan användas som en indexerad matris utan att deklarera det.
För att uttryckligen förklara en matris använder du deklarationen inbyggd:
declare -a array_name
Ett sätt att skapa en indexerad matris är genom att använda följande form:
array_name=value_1 array_name=value_2 array_name=value_n
Där
index_*
är ett positivt heltal.
Ett annat sätt att skapa en numerisk grupp är att ange listan över element inom parentes, åtskilda med tomt utrymme:
array_name=(element_1 element_2 element_N)
När matrisen skapas med hjälp av formuläret ovan börjar indexering på noll, dvs. det första elementet har ett index på
0
.
Skapa associerande matriser
Till skillnad från numeriskt indexerade måste de associerande matriserna deklareras innan de kan användas.
För att förklara en associerande grupp använder du
declare
inbyggd med alternativet
-A
(versaler):
declare -A array_name
Associerande matriser kan skapas med följande formulär:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
Där
index_*
kan vara vilken sträng som helst.
Du kan också skapa en associerande matris med hjälp av formuläret nedan:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
Array-operationer
Basharrays-syntax kan se lite konstigt ut i början, men det kommer att vara mer meningsfullt när du läser den här artikeln.
Referenselement
För att referera till ett enda element måste du känna till elementindex.
Alla element kan refereras med följande syntax:
${array_name}
Syntaxen för åtkomst till ett arrayelement liknar syntaxen för de flesta programmeringsspråk. De lockiga hängslen
${}
krävs för att undvika skalets expansionsoperatörer för filnamn.
Låt oss skriva ut elementet med index 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 enda skillnaden mellan
@
och
*
är när formen
${my_array}
är omgiven av dubbla citat. I det här fallet expanderar
*
till ett enda ord där matriselement separeras med mellanslag.
@
expanderar varje matriselement till ett separat ord. Detta är särskilt viktigt när du använder formuläret för att analfestera genom matriselement.
Lägg till
!
För att skriva ut tangenterna i matrisen
!
operatör före matrisnamnet:
${!array_name}
Här är ett exempel:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
Array Längd
För att få längden på en matris använder du följande formulär:
${#array_name}
Syntaxen är densamma som när man refererar till alla element med tillägg av tecknet
#
före matrisnamnet.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
Slinga genom matrisen
Det vanligaste sättet att iterera över varje objekt i en matris är genom att använda for-loop:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
Koden ovan kommer att iterera över matrisen och skriva ut varje element i en ny rad:
Hydrogen Helium Lithium Beryllium
Här är ett exempel på hur du skriver ut alla nycklar och värden:
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
Ett annat sätt att gå igenom en matris är att få längden på matrisen och använda
C style
stilslingan:
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
Lägg till ett nytt element
För att lägga till ett nytt element i en bash array och ange dess index använder du följande form:
my_array="New Element"
Här är ett exempel:
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
Ett annat sätt att lägga till ett nytt element i en matris utan att ange indexet är att använda
+=
operatören. Du kan lägga till ett eller flera element:
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
Radera ett element
För att radera ett enda element måste du känna till elementindexet. Ett element kan tas bort med kommandot
unset
:
unset my_array
Låt oss se ett exempel:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
Slutsats
Vi har förklarat hur man skapar numeriskt indexerade och associerande matriser. Vi har också visat hur man kan iterera genom matriserna, beräkna arrayens längd och lägga till och ta bort element.
bash terminalMicrosoft Research Asia Hosts Gates vid 10 års Bash
Microsoft Research Asia har ökat från ett dussin personer 1998 till mer än 350 ett decennium senare.
Så här kör du Bash på Ubuntu på Windows 10
Genom att aktivera Windows Subsystem för Linux kan du köra Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandoradsverktyg, Linux-första verktyg.
Bash för slinga
Det finns tre grundläggande slingkonstruktioner i Bash-skript, för loop, medan loop och tills loop. I den här tutorialen kommer vi att täcka grunderna för för öglor i Bash såväl som pausen och fortsätta uttalanden för att ändra flödet i en slinga.







