Få styr på Bash-arrays - hvordan man deklarerer dem, manipulerer dem og sletter dem.

Arrays er datalagre, der bruges til at holde værdier, der har en eller anden relation til hinanden. I modsætning til de fleste programmeringssprog kan Bash-arrays gemme værdier af forskellige datatyper i samme array.

Bash har to typer arrays: indekserede arrays og associative arrays. For indekserede arrays begynder indekserne fra 0 til (n-1), som det er almindeligt på de fleste sprog. Arrays i Bash er dog sparsomme. Det betyder, at du kan tildele det (n-1) array-element uden at have tildelt det (n-2) element.

I denne tutorial lærer du, hvordan du arbejder med arrays i Bash. Lad os komme igang.

Definition af arrays

Der er tre måder, du kan definere arrays på i Bash. I lighed med Bash-variabler skal arrays initialiseres ved oprettelse. Den eneste undtagelse fra dette er, hvis du bruger erklære søgeord. Du skal også være sikker på, at der ikke er plads tilbage på begge sider af tildelingsoperatoren, mens du initialiserer arrayet.

instagram viewer

Den første metode er sammensat tildeling af værdier til matrixnavnet. Der er to måder at gøre dette på:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

I den første sammensatte opgave tildeles værdierne i de runde parenteser sekventielt fra indekset [0] til [3].

Men i den anden tildeles værdierne til et indeks, uanset hvilken rækkefølge programmøren har angivet.

Relaterede: Hvad er miljøvariabler i Linux? Alt hvad du behøver at vide

Hvis du lagde mærke til det arr2, vil du bemærke det indeks [2] blev udeladt. Arrayet vil stadig blive oprettet uden nogen fejl. Denne opgave er faktisk en demonstration af sparsom opbevaring i Bash-arrays, som vi var inde på tidligere.

Bemærk, at der ikke er kommaer, der adskiller matrixværdierne. Værdierne er simpelthen adskilt af mellemrum.

Den anden metode erklærer arrayet indirekte. Du kan bare begynde at tildele værdier til null-array-elementer:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

Den tredje måde er eksplicit at erklære arrayet med nøgleordet erklære:

declare -a arrayName

Operationer på arrays

Brug denne syntaks for at få adgang til array-elementer: ${array[indeks]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Hvis du i stedet skal udskrive hele arrayet, skal du bruge @ symbol som

indeks af ${array[indeks]}:

echo${fruits[@]}

For at finde ud af antallet af elementer i arrayet, brug # symbol som vist nedenfor:

echo ${#fruits[1]}

Du skal muligvis også ændre array-elementer - se eksemplet nedenfor om, hvordan du gør det. Det svarer til, hvordan du tilføjer et nyt element. Den eneste forskel er, at du erstatter en værdi med et indeks, der allerede har en værdi.

fruits[1]=pears

Associative Arrays

Et array, der har vilkårlige værdier som sine nøgler, kaldes et associativt array. Disse arrays bruges til at gemme relaterede nøgle-værdi-par.

Relaterede: Sådan gør du Bash-scripts til klikbare apps ved hjælp af AppleScript

For at definere et associativt array skal du gøre det eksplicit ved at bruge nøgleordet erklære.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

Du kan få adgang til et medlemselement på samme måde, som du gør indekserede arrays:

echo${animal[lion]}

Hvis du ønsker at udskrive alle værdierne, kan du bruge @ symbol som vist nedenfor:

echo${animal[@]}

Hvis du vil udskrive alle array-tasterne, kan du bruge @ og ! symboler som vist nedenfor:

echo${!animal[@]}

For at finde antallet af elementer, det associative array har, skal du bruge den samme syntaks, som du ville bruge med indekserede arrays (demonstreret i sidste afsnit).

Hvis du ønsker at slette et array-element eller hele arrayet, skal du bruge syntaksen nedenfor:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Brug af printf-kommandoen

Du har måske bemærket, at hele denne artikel bruger ekko kommando til at udlæse data til skallen. Det ekko kommandoen fungerer for denne vejledning, men har få funktioner og fleksibilitet, når det kommer til strengformatering.

Imidlertid printf kommandoen tilbyder mere specifikke formateringsmuligheder, der gør Bash-scripting til en leg. At lære printf funktion vil helt sikkert forbedre din strengformateringsoplevelse og effektivitet i Bash.