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
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=( 'Welcome''To''Javatpoint' ) #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]='New Element' </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring an array declare -a example_array=( 'Java''Python''PHP''HTML' ) #Adding new element example_array[4]='JavaScript' #Printing all the elements echo '${example_array[@]}' </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=( 'Java''Python''PHP' ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo '${example_array[@]}' </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's change the array element at index 4 with an element 'Javatpoint'.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( 'We''welcome''you''on''SSSIT' ) #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 ' <strong>unset</strong> ' 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=( 'Java''Python''HTML''CSS''JavaScript' ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo '${example_array[@]}' </pre> <p> <strong>Output</strong> </p> <pre> Java HTML CSS JavaScript </pre> <p>Here, we have created a simple array consisting of five elements, 'Java', 'Python', 'HTML', 'CSS' and 'JavaScript'. Then we removed the element 'Python' from the array by using 'unset' and referencing the index of it. The index of element 'Python' was '1', 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 ' <strong>unset</strong> ' 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=( 'Java''Python''HTML''CSS''JavaScript' ) #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'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 'm' to an ending index 'n', we can use the following syntax:</p> <pre> SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}') </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=( 'Java''Python''HTML''CSS''JavaScript' ) #Slicing the Array sliced_array=('${example_array[@]:1:3}') #Applying for loop to iterate over each element in Array for i in '${sliced_array[@]}' 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=( 'Java''Python''PHP''HTML' ) #Adding new element example_array[4]='JavaScript' #Printing all the elements echo '${example_array[@]}'
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=( 'Java''Python''PHP' ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo '${example_array[@]}'
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=( 'We''welcome''you''on''SSSIT' ) #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=( 'Java''Python''HTML''CSS''JavaScript' ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo '${example_array[@]}'
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=( 'Java''Python''HTML''CSS''JavaScript' ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]}
Produktion
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}')
Exempel
#!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( 'Java''Python''HTML''CSS''JavaScript' ) #Slicing the Array sliced_array=('${example_array[@]:1:3}') #Applying for loop to iterate over each element in Array for i in '${sliced_array[@]}' do echo $i done
Produktion
${length};>