Ta reda på Bash-arrayer – hur man deklarerar dem, manipulerar dem och tar bort dem.
Matriser är datalager som används för att hålla värden som har någon relation till varandra. Till skillnad från i de flesta programmeringsspråk kan Bash-arrayer lagra värden för olika datatyper i samma array.
Bash har två typer av arrayer: indexerade arrayer och associativa arrayer. För indexerade arrayer börjar indexen från 0 till (n-1), vilket är vanligt på de flesta språk. Men arrayer i Bash är glesa. Det betyder att du kan tilldela det (n-1):e arrayelementet utan att ha tilldelat det (n-2):e elementet.
I den här handledningen kommer du att lära dig hur du arbetar med arrayer i Bash. Låt oss börja.
Definiera matriser
Det finns tre sätt du kan definiera arrayer i Bash. I likhet med Bash-variabler måste arrayer initieras när de skapas. Det enda undantaget från detta är om du använder deklarera nyckelord. Du måste också vara säker på att inget utrymme finns kvar på någon sida av tilldelningsoperatorn när du initierar arrayen.
Den första metoden är sammansatt tilldelning av värden till arraynamnet. Det finns två sätt att göra detta:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
I den första sammansatta tilldelningen tilldelas värdena inom de runda parenteserna sekventiellt från indexet [0] till [3].
Men i den andra tilldelas värdena till ett index i vilken ordning programmeraren än har angett.
Relaterad: Vad är miljövariabler i Linux? Allt du behöver veta
Om du tog noga hänsyn till arr2, kommer du att märka det indexet [2] lämnades utanför. Arrayen kommer fortfarande att skapas utan några fel. Den här uppgiften är faktiskt en demonstration av sparsam lagring i Bash-arrayer som vi berörde tidigare.
Observera att det inte finns några kommatecken som skiljer arrayvärdena åt. Värdena är helt enkelt åtskilda med mellanslag.
Den andra metoden deklarerar arrayen indirekt. Du kan bara börja tilldela värden till null-matriselement:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
Det tredje sättet är att explicit deklarera arrayen med nyckelordet deklarera:
declare -a arrayName
Operationer på Arrays
För att komma åt arrayelement, använd denna syntax: ${array[index]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Om du behöver skriva ut hela arrayen istället, använd @ symbol som
index av ${array[index]}:
echo${fruits[@]}
För att ta reda på antalet element i arrayen, använd # symbol som visas nedan:
echo ${#fruits[1]}
Du kan också behöva modifiera arrayelement – se exemplet nedan om hur du gör det. Det liknar hur du lägger till ett nytt element. Den enda skillnaden är att du ersätter ett värde till ett index som redan har ett värde.
fruits[1]=pears
Associativa arrayer
En array som har godtyckliga värden som sina nycklar kallas en associativ array. Dessa arrayer används för att lagra relaterade nyckel-värdepar.
Relaterad: Hur man förvandlar Bash-skript till klickbara appar med AppleScript
För att definiera en associativ array måste du göra det uttryckligen med hjälp av nyckelordet deklarera.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Du kan komma åt ett medlemselement på samma sätt som du gör indexerade arrayer:
echo${animal[lion]}
Om du vill skriva ut alla värden kan du använda @ symbol som visas nedan:
echo${animal[@]}
Om du vill skriva ut alla array-nycklar kan du använda @ och ! symboler som visas nedan:
echo${!animal[@]}
För att hitta antalet element som den associativa arrayen har, använd samma syntax som du skulle använda med indexerade arrayer (visas i det sista avsnittet).
Om du vill ta bort ett arrayobjekt eller hela arrayen, använd syntaxen nedan:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Använd kommandot printf
Du kanske har märkt att hela den här artikeln använder eko kommando för att mata ut data till skalet. De eko kommandot fungerar för den här handledningen men har få funktioner och flexibilitet när det kommer till strängformatering.
Men den printf kommandot erbjuder mer specifika formateringsalternativ som gör Bash-skript till en lek. Att lära sig printf funktionen kommer säkerligen att förbättra din strängformateringsupplevelse och effektivitet i Bash.