En matris är en samling element. I Bash kan en matris innehålla en blandning av element av olika typer, t.ex. Strängar och siffror.
I denna handledning diskuterar vi hur man skapar och använder matriser i Bash. Vi kommer också att täcka array-operationer som looping, utskrift, få storlek och modifiera innehållet.
Det finns två sätt att skapa Bash-matriser:
declare -a my_bash_array
detta skapar en indexerad matris med namnet “my_bash_array”.
Vi kan också skapa och initiera matriser i farten med tilldelningsoperatören =
och elementen i lockiga hängslen ()
:
my_bash_array=('apple' 'orange' 'banana')
Eller så kan vi också specificera indexet uttryckligen
my_bash_array[0]='apple' my_bash_array[1]='orange' my_bash_array[2]='banana'
Notera:Det bör inte finnas några mellanslag på vardera sidan om = operatör.För att få längden eller storleken på en matris använder vi ${#array_name[@]}
.
Till exempel:
my_bash_array=(foo bar baz) echo 'the array contains ${#my_bash_array[@]} elements' #Output the array contains 3 elements
För att itera igenom alla element i en Bash-array kan vi använda for loop:
#!/bin/bash my_array=(foo bar baz) # for loop that iterates over each element for i in '${my_array[@]}' do
echo $i done
Produktion:
foo bar baz
För att skriva ut alla element i en matris utan en loop kan vi använda följande syntax:
echo ${my_array[@]}
För att lägga till element i en matris använder vi +=
operatör. Detta kommer att lägga till ett element i slutet av matrisen.
Till exempel:
my_array=(foo bar) my_array+=(baz) echo '${my_array[@]}' foo bar baz
Eller så kan vi använda indexet för att lägga till ett element:
my_array=(foo bar) my_array[2]=baz echo '${my_array[@]}' foo bar baz
För att ta bort ett element från en Bash-array använder vi unset
kommando.
Till exempel:
my_array=(foo bar baz) unset my_array[1] echo ${my_array[@]} foo baz
I denna handledning täckte vi Bash arrays; hur man skapar och initialiserar matriser i Bash och hur man får längden, slingrar element, skriver ut element och ändrar innehållet i en matris.