logo

Bash Array

I det här ämnet kommer vi att demonstrera grunderna i bash array och hur de används i bash shell scripting.

En array kan definieras som en samling av liknande typer av element. Till skillnad från de flesta programmeringsspråk behöver arrayer i bash-skript inte vara en samling av liknande element. Eftersom Bash inte särskiljer strängen från ett nummer, kan en array innehålla både strängar och siffror.

Bash tillhandahåller inte stöd för de flerdimensionella arrayerna; vi kan inte ha de element som är arrayer i sig själva. Bash ger stöd för endimensionella numeriskt indexerade arrayer såväl som associativa arrayer. För att komma åt den numeriskt indexerade matrisen från den senaste kan vi använda negativa index. Indexet '-1' kommer att betraktas som en referens för det sista elementet. Vi kan använda flera element i en array.

Bash Array-deklaration

Arrayer i Bash kan deklareras på följande sätt:

Skapa numeriskt indexerade arrayer

Vi kan använda vilken variabel som helst som en indexerad array utan att deklarera den.

För att explicit deklarera en variabel som en Bash Array, använd nyckelordet 'declare' och syntaxen kan definieras som:

 declare -a ARRAY_NAME 

var,

ARRAY_NAME anger namnet som vi skulle tilldela arrayen.

Notera:Reglerna för att namnge en variabel i Bash är desamma för att namnge en array.

En allmän metod för att skapa en indexerad array kan definieras i följande form:

 ARRAY_NAME[index_1]=value_1 ARRAY_NAME[index_2]=value_2 ARRAY_NAME[index_n]=value_n 

där nyckelordet 'index' används för att definiera positiva heltal.

Skapa associativa arrayer

Till skillnad från numeriskt indexerade arrayer deklareras de associativa arrayerna först. Vi kan använda nyckelordet 'declare' och alternativet -A (versaler) för att deklarera de associativa arrayerna. Syntaxen kan definieras som:

 declare -A ARRAY_NAME 

En allmän metod för att skapa en associativ array kan definieras i följande form:

 declare -A ARRAY_NAME ARRAY_NAME[index_foo]=value_foo ARRAY_NAME[index_bar]=value_bar ARRAY_NAME[index_xyz]=value_xyz 

där index_ används för att definiera vilken sträng som helst.

Vi kan också skriva ovanstående formulär på följande sätt:

linux vilket kommando
 declare -A ARRAY_NAME ARRAY_NAME=( [index_foo]=value_foo [index_bar]=value_bar [index_xyz]=value_xyz ) 

Bash Array-initiering

För att initiera en Bash Array kan vi använda tilldelningsoperatorn (=), genom att ange listan med element inom parentes, separerade med mellanslag som nedan:

 ARRAY_NAME=(element_1st element_2nd element_Nth) 

Notera:Här kommer det första elementet att ha ett index 0. Dessutom bör det inte finnas något mellanslag runt tilldelningsoperatorn (=).

Få tillgång till Elements of Bash Array

För att komma åt elementen i en Bash Array kan vi använda följande syntax:

 echo ${ARRAY_NAME[2]} 

Skriv ut Bash Array

Vi kan använda nyckelordet 'declare' med ett '-p'-alternativ för att skriva ut alla element i en Bash Array med alla index och detaljer. Syntaxen för att skriva ut Bash Array kan definieras som:

 declare -p ARRAY_NAME 

Arrayoperationer

När en array väl har tilldelats kan vi utföra några användbara operationer på den. Vi kan visa dess nycklar och värden samt ändra dem genom att lägga till eller ta bort elementen:

Referenselement

För att referera till ett enskilt element måste vi känna till elementets indexnummer. Vi kan referera eller skriva ut vilket element som helst med hjälp av följande syntax:

 ${ARRAY_NAME[index]} 

Notera:Lockiga hängslen ${} krävs för att undvika shells filnamnsexpansionsoperatorer.

Låt oss till exempel skriva ut ett element i en array med ett index på 2:

Bash Script

 #!/bin/bash #Script to print an element of an array with an index of 2 #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #printing the element with index of 2 echo ${example_array[2]} 

Produktion

 Javatpoint 

Om vi ​​använder @ eller * i stället för ett specificerat index kommer det att expandera till alla medlemmar i arrayen. För att skriva ut alla element kan vi använda följande formulär:

Bash Script

mia khalifas ålder
 #!/bin/bash #Script to print all the elements of the array #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing all the elements echo '${example_array[@]}' 

Produktion

 Welcome to Javatpoint 

Den enda skillnaden mellan att använda @ och * är att formuläret är omgivet av dubbla citattecken när du använder @. I det första fallet (medan @ används) ger expansionen ett resultat i ett ord för varje element i arrayen. Det kan bättre beskrivas med hjälp av 'for loop'. Antag att vi har en array med tre element, 'Välkommen', 'Till' och 'Javatpoint':

 $ example_array= (Welcome to Javatpoint) 

Applicera en slinga med @:

 for i in '${example_array[@]}'; do echo '$i'; done 

Det kommer att ge följande resultat:

 Welcome To Javatpoint 

Genom att applicera en loop med *, kommer ett enda resultat att skapas som innehåller alla element i arrayen som ett enda ord:

 Welcome To Javatpoint 

Det är viktigt att förstå användningen av @ och * eftersom det är användbart när du använder formuläret för att iterera genom arrayelement.

Skriva ut nycklarna till en array

Vi kan också hämta och skriva ut nycklar som används i indexerade eller associativa arrayer, istället för deras respektive värden. Det kan utföras genom att lägga till ! operatorn före arraynamnet enligt nedan:

stoppning css
 ${!ARRAY_NAME[index]} 

Exempel

 #!/bin/bash #Script to print the keys of the array #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing the Keys echo '${!example_array[@]}' 

Produktion

 0 1 2 

Hitta matrislängd

Vi kan räkna antalet element som finns i arrayen genom att använda följande formulär:

 ${#ARRAY_NAME[@]} 

Exempel

 #!/bin/bash #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing Array Length echo 'The array contains ${#example_array[@]} elements' 

Produktion

 The array contains 3 elements 

Slinga genom Arrayen

Den allmänna metoden att iterera över varje objekt i en array är att använda 'for loop'.

Exempel

 #!/bin/bash #Script to print all keys and values using loop through the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Array Loop for i in '${!example_array[@]}' do echo The key value of element '${example_array[$i]}' is '$i' done 

Produktion

Bash Array

En annan vanlig metod för att loopa genom en array är att hämta längden på arrayen och använda C-style loopen:

Bash Script

 #!/bin/bash #Script to loop through an array in C-style declare -a example_array=( &apos;Welcome&apos;&apos;To&apos;&apos;Javatpoint&apos; ) #Length of the Array length=${#example_array[@]} #Array Loop for (( i=0; i <${length}; i++ )) do echo $i ${example_array[$i]} done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-2.webp" alt="Bash Array"> <h3>Adding Elements to an Array</h3> <p>We have an option to add elements to an indexed or associative array by specifying their index or associative key respectively. To add the new element to an array in bash, we can use the following form:</p> <pre> ARRAY_NAME[index_n]=&apos;New Element&apos; </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP HTML JavaScript </pre> <p>Another method for adding a new element to an array is by using the += operator. There is no need to specify the index in this method. We can add one or multiple elements in the array by using the following way:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP JavaScript CSS SQL </pre> <h3>Updating Array Element</h3> <p>We can update the array element by assigning a new value to the existing array by its index value. Let&apos;s change the array element at index 4 with an element &apos;Javatpoint&apos;.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} </pre> <p> <strong>Output</strong> </p> <pre> We welcome you on Javatpoint </pre> <h3>Deleting an Element from an Array</h3> <p>If we want to delete the element from the array, we have to know its index or key in case of an associative array. An element can be removed by using the &apos; <strong>unset</strong> &apos; command:</p> <pre> unset ARRAY_NAME[index] </pre> <p>An example is shown below to provide you a better understanding of this concept:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java HTML CSS JavaScript </pre> <p>Here, we have created a simple array consisting of five elements, &apos;Java&apos;, &apos;Python&apos;, &apos;HTML&apos;, &apos;CSS&apos; and &apos;JavaScript&apos;. Then we removed the element &apos;Python&apos; from the array by using &apos;unset&apos; and referencing the index of it. The index of element &apos;Python&apos; was &apos;1&apos;, since bash arrays start from 0. If we check the indexes of the array after removing the element, we can see that the index for the removed element is missing. We can check the indexes by adding the following command into the script:</p> <pre> echo ${!example_array[@]} </pre> <p>The output will look like:</p> <pre> 0 2 3 4 </pre> <p>This concept also works for the associative arrays.</p> <h3>Deleting the Entire Array</h3> <p>Deleting an entire array is a very simple task. It can be performed by passing the array name as an argument to the &apos; <strong>unset</strong> &apos; command without specifying the index or key.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-3.webp" alt="Bash Array"> <p>There will be no output if we try to print the content of the above script. An empty result is returned because the array doesn&apos;t exist anymore.</p> <h3>Slice Array Elements</h3> <p>Bash arrays can also be sliced from a given starting index to the ending index.</p> <p>To slice an array from starting index &apos;m&apos; to an ending index &apos;n&apos;, we can use the following syntax:</p> <pre> SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-4.webp" alt="Bash Array"> <hr></${length};>

Exempel

 #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; 

Produktion

 Java Python PHP HTML JavaScript 

En annan metod för att lägga till ett nytt element i en array är att använda operatorn +=. Det finns inget behov av att ange index i denna metod. Vi kan lägga till ett eller flera element i arrayen genom att använda följande sätt:

Exempel

 #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; 

Produktion

 Java Python PHP JavaScript CSS SQL 

Uppdaterar Array Element

Vi kan uppdatera arrayelementet genom att tilldela ett nytt värde till den befintliga arrayen med dess indexvärde. Låt oss ändra arrayelementet vid index 4 med ett element 'Javatpoint'.

Exempel

 #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} 

Produktion

 We welcome you on Javatpoint 

Ta bort ett element från en array

Om vi ​​vill ta bort elementet från arrayen måste vi känna till dess index eller nyckel i händelse av en associativ array. Ett element kan tas bort genom att använda ' avstängd ' kommando:

 unset ARRAY_NAME[index] 

Ett exempel visas nedan för att ge dig en bättre förståelse av detta koncept:

Exempel

 #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; 

Produktion

 Java HTML CSS JavaScript 

Här har vi skapat en enkel array som består av fem element, 'Java', 'Python', 'HTML', 'CSS' och 'JavaScript'. Sedan tog vi bort elementet 'Python' från arrayen genom att använda 'unset' och referera till indexet för det. Indexet för elementet 'Python' var '1', eftersom bash-arrayer börjar från 0. Om vi ​​kontrollerar indexen för arrayen efter att ha tagit bort elementet kan vi se att indexet för det borttagna elementet saknas. Vi kan kontrollera indexen genom att lägga till följande kommando i skriptet:

 echo ${!example_array[@]} 

Utgången kommer att se ut så här:

 0 2 3 4 

Detta koncept fungerar även för de associativa arrayerna.

rajesh khanna

Ta bort hela arrayen

Att ta bort en hel array är en mycket enkel uppgift. Det kan utföras genom att skicka arraynamnet som ett argument till ' avstängd ' kommando utan att ange index eller nyckel.

Exempel

 #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} 

Produktion

Bash Array

Det blir ingen utdata om vi försöker skriva ut innehållet i ovanstående skript. Ett tomt resultat returneras eftersom arrayen inte finns längre.

Slice Array Elements

Bash-arrayer kan också delas upp från ett givet startindex till slutindex.

För att dela en array från startindex 'm' till ett slutindex 'n' kan vi använda följande syntax:

 SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) 

Exempel

 #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done 

Produktion

Bash Array