logo

Bash Array

I dette emne vil vi demonstrere det grundlæggende i bash array, og hvordan de bruges i bash shell scripting.

Et array kan defineres som en samling af lignende typer elementer. I modsætning til de fleste programmeringssprog behøver arrays i bash-scripting ikke at være en samling af lignende elementer. Da Bash ikke skelner strengen fra et tal, kan en matrix indeholde både strenge og tal.

Bash giver ikke support til de multidimensionelle arrays; vi kan ikke have de elementer, som er arrays i sig selv. Bash understøtter endimensionelle numerisk indekserede arrays såvel som associative arrays. For at få adgang til det numerisk indekserede array fra sidst, kan vi bruge negative indekser. Indekset '-1' vil blive betragtet som en reference for det sidste element. Vi kan bruge flere elementer i et array.

Bash Array-erklæring

Arrays i Bash kan erklæres på følgende måder:

Oprettelse af numerisk indekserede arrays

Vi kan bruge enhver variabel som et indekseret array uden at erklære det.

For eksplicit at erklære en variabel som en Bash Array, brug nøgleordet 'declare' og syntaksen kan defineres som:

 declare -a ARRAY_NAME 

hvor,

ARRAY_NAME angiver det navn, som vi vil tildele arrayet.

Bemærk:Reglerne for at navngive en variabel i Bash er de samme for at navngive en matrix.

En generel metode til at oprette et indekseret array kan defineres i følgende form:

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

hvor søgeordet 'indeks' bruges til at definere positive heltal.

Oprettelse af associative arrays

I modsætning til numerisk indekserede arrays er de associative arrays først erklæret. Vi kan bruge nøgleordet 'declare' og muligheden -A (store bogstaver) til at erklære de associative arrays. Syntaksen kan defineres som:

 declare -A ARRAY_NAME 

En generel metode til at skabe et associativt array kan defineres i følgende form:

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

hvor index_ bruges til at definere enhver streng.

Vi kan også skrive ovenstående formular på følgende måde:

java bryde ud af loop
 declare -A ARRAY_NAME ARRAY_NAME=( [index_foo]=value_foo [index_bar]=value_bar [index_xyz]=value_xyz ) 

Bash Array Initialisering

For at initialisere en Bash Array kan vi bruge tildelingsoperator (=) ved at angive listen over elementerne inden for parentes, adskilt af mellemrum som nedenfor:

 ARRAY_NAME=(element_1st element_2nd element_Nth) 

Bemærk:Her vil det første element have et indeks 0. Der bør heller ikke være mellemrum omkring tildelingsoperatoren (=).

Få adgang til elementer i Bash Array

For at få adgang til elementerne i en Bash Array kan vi bruge følgende syntaks:

10 ml til ounces
 echo ${ARRAY_NAME[2]} 

Udskriv Bash Array

Vi kan bruge søgeordet 'declare' med en '-p' mulighed for at udskrive alle elementerne i en Bash Array med alle indekser og detaljer. Syntaksen til at udskrive Bash Array kan defineres som:

 declare -p ARRAY_NAME 

Array operationer

Når et array er tildelt, kan vi udføre nogle nyttige operationer på det. Vi kan vise dens nøgler og værdier samt ændre dem ved at tilføje eller fjerne elementerne:

Referenceelementer

For at referere til et enkelt element skal vi kende elementets indeksnummer. Vi kan referere eller udskrive ethvert element ved hjælp af følgende syntaks:

 ${ARRAY_NAME[index]} 

Bemærk:Krøllede klammeparenteser ${} er nødvendige for at undgå shells filnavnsudvidelsesoperatorer.

Lad os for eksempel udskrive et element i en matrix med et indeks 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 

Hvis vi bruger @ eller * i stedet for et specificeret indeks, udvides det til alle medlemmer af arrayet. For at udskrive alle elementerne kan vi bruge følgende formular:

Bash Script

 #!/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 eneste forskel mellem at bruge @ og * er, at formularen er omgivet af dobbelte anførselstegn, mens du bruger @. I det første tilfælde (mens du bruger @), giver udvidelsen et resultat i et ord for hvert element i arrayet. Det kan bedre beskrives ved hjælp af 'for loop'. Antag, at vi har et array med tre elementer, 'Velkommen', 'Til' og 'Javatpoint':

 $ example_array= (Welcome to Javatpoint) 

Anvendelse af en løkke med @:

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

Det vil give følgende resultat:

 Welcome To Javatpoint 

Ved at anvende en løkke med *, vil der blive produceret et enkelt resultat, der indeholder alle elementerne i arrayet som et enkelt ord:

 Welcome To Javatpoint 

Det er vigtigt at forstå brugen af ​​@ og *, fordi det er nyttigt, mens du bruger formularen til at gentage array-elementer.

Udskrivning af nøglerne til et array

Vi kan også hente og udskrive de nøgler, der bruges i indekserede eller associative arrays, i stedet for deres respektive værdier. Det kan udføres ved at tilføje ! operator før matrixnavnet som nedenfor:

pandas loc
 ${!ARRAY_NAME[index]} 

Eksempel

 #!/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 

Find arraylængde

Vi kan tælle antallet af elementer indeholdt i arrayet ved at bruge følgende formular:

 ${#ARRAY_NAME[@]} 

Eksempel

 #!/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 

Sløjfe gennem Arrayet

Den generelle metode til at iterere over hvert element i et array er ved at bruge 'for loop'.

Eksempel

 #!/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 anden almindelig metode til at sløjfe gennem et array er at hente længden af ​​arrayet og bruge C-style loop:

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};>

Eksempel

 #!/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 anden metode til at tilføje et nyt element til et array er ved at bruge += operatoren. Det er ikke nødvendigt at angive indekset i denne metode. Vi kan tilføje et eller flere elementer i arrayet ved at bruge følgende måde:

Eksempel

 #!/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 

Opdatering af Array Element

Vi kan opdatere array-elementet ved at tildele en ny værdi til det eksisterende array ved dets indeksværdi. Lad os ændre array-elementet ved indeks 4 med et element 'Javatpoint'.

Eksempel

 #!/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 

Sletning af et element fra et array

Hvis vi ønsker at slette elementet fra arrayet, skal vi kende dets indeks eller nøgle i tilfælde af en associativ array. Et element kan fjernes ved at bruge ' deaktiveret ' kommando:

 unset ARRAY_NAME[index] 

Et eksempel er vist nedenfor for at give dig en bedre forståelse af dette koncept:

Eksempel

 #!/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 

Her har vi lavet et simpelt array bestående af fem elementer, 'Java', 'Python', 'HTML', 'CSS' og 'JavaScript'. Derefter fjernede vi elementet 'Python' fra arrayet ved at bruge 'unset' og referere til indekset for det. Indekset for elementet 'Python' var '1', da bash-arrays starter fra 0. Hvis vi tjekker indeksene for arrayet efter at have fjernet elementet, kan vi se, at indekset for det fjernede element mangler. Vi kan kontrollere indekserne ved at tilføje følgende kommando i scriptet:

 echo ${!example_array[@]} 

Outputtet vil se sådan ud:

 0 2 3 4 

Dette koncept fungerer også for de associative arrays.

Sletning af hele arrayet

Sletning af et helt array er en meget enkel opgave. Det kan udføres ved at sende array-navnet som et argument til ' deaktiveret ' kommando uden at angive indekset eller nøglen.

Eksempel

 #!/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

Der vil ikke være noget output, hvis vi forsøger at udskrive indholdet af ovenstående script. Et tomt resultat returneres, fordi arrayet ikke eksisterer længere.

java hvis andet

Slice Array Elements

Bash-arrays kan også opdeles fra et givet startindeks til slutindekset.

For at opdele et array fra startindeks 'm' til et slutindeks 'n' kan vi bruge følgende syntaks:

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

Eksempel

 #!/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