logo

Bash-scripting – Array

Arrays zijn belangrijke concepten bij programmeren of scripten. Met arrays kunnen we elementen opslaan en ophalen in een lijstvorm die voor bepaalde taken kan worden gebruikt. In bash hebben we ook arrays die ons helpen bij het maken van scripts op de opdrachtregel voor het opslaan van gegevens in een lijstindeling. In dit artikel zullen we de basisbeginselen van arrays in bash-scripting begrijpen.

Arrays maken

Om een ​​basisarray in een bash-script te maken, kunnen we de declare -A commando gevolgd door de naam van de arrayvariabele die u wilt opgeven.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball )>

OF



#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball>

De waarde van de elementen kan naar wens elk geheel getal of strings of elke andere vorm van gegevens zijn. We kunnen zien dat de array op twee manieren in een bash-script wordt gedeclareerd; de eerste lijkt handiger en minder hectisch om te declareren. Als we de array in één keer willen declareren, is de eerste de optimale keuze, maar als de elementen in stukjes en beetjes moeten worden toegevoegd, is de laatste een goede keuze.

De arrays afdrukken

Als we na het declareren van de array alle elementen in de array willen weergeven, kunnen we het @-symbool gebruiken.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}'>

echo '${array_name[@]}'>

We gebruiken de [@] als index voor de array om alle elementen weer te geven. Alle elementen worden met spaties gescheiden afgedrukt. De aanhalingstekens rond de variabele worden groter en worden alle elementen in de array afgedrukt.

Itereren over de array

Om element voor element over een array te herhalen, kunnen we lussen gebruiken en alle bewerkingen binnen de hoofdtekst ervan uitvoeren.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done>

Zoals we kunnen zien, hebben we een for-lus gebruikt om de elementen één voor één uit de array af te drukken. We hebben in de vorige sectie de truc gebruikt om alle elementen van de array op te halen en er één voor één overheen te itereren in de for-lus. De ${array_name[@]} breidt zich uit naar alle elementen in de array en de for-lus herhaalt ze één voor één met de iterator in het voorbeeld, het is de variabele ik , in de hoofdtekst van de for-lus drukken we de variabele/iterator i en dus itereren over de array.

Haal het aantal elementen in de array op

Om het aantal elementenarray op te halen, kunnen we de operator # gebruiken vóór de arraynaam in de s in ${array_name[@]}.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}'>

We retourneren dus de grootte van de array met behulp van de opdracht ${#sport[@]}, de # wordt gebruikt om de grootte van de variabele ernaast te krijgen, met behulp van de dubbele aanhalingstekens wordt de waarde van het commando geëvalueerd en krijgen we het aantal elementen in de array zoals gewenst.

Een element in Array invoegen

Het invoegen van een element is vrij eenvoudig. We moeten de juiste index van het element instellen, gevolgd door de waarde van het element dat u wilt opgeven.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}'>

We hebben het vijfde element (4e index) aan de array toegevoegd en ook het derde element van de array (2e index) gewijzigd/bewerkt. De arraynaam[index]=waarde zijn alle trucs om de elementen van de array toe te voegen, te wijzigen of te initialiseren.

We kunnen ook elementen aan een array toevoegen met behulp van de += operator.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}'>

Zoals u in het voorbeeld kunt zien, kunnen we met minimale code meerdere elementen aan de array toevoegen. We gebruiken de array_name+=(elements) om elementen aan de array toe te voegen.

Een element uit Array verwijderen

Om een ​​element uit de array te verwijderen, kunnen we het commando unset gebruiken. Het commando neemt de naam van de variabele over, in ons geval de arraynaam en de index van dat element. De index kan ook relatief zijn, d.w.z. -1 geeft het laatste element aan en -2 tot het voorlaatste element, enzovoort.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}'>

Zoals we kunnen zien, zal unset arrayname[index] het element op index uit de array verwijderen. Ook is de grootte van de array teruggebracht van 4 naar 3, wat aangeeft dat het element volledig is verwijderd en niet alleen is vervangen door witruimte.

Relatieve indexen gebruiken

Als we indices zoals -1, -2, enzovoort gebruiken, wordt naar de elementen verwezen vanaf het laatste element, en daarom kunnen we ze ook verwijderen of wijzigen met relatieve volgorde vanaf de achterkant.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}'>

Zoals we kunnen zien, wordt vanaf de achterkant ook naar index 1 verwezen als -3, waardoor het relatief eenvoudiger wordt om naar bepaalde elementen in een grote array te verwijzen.

Een array splitsen

We kunnen een array splitsen (een drankje eruit halen) om deze toe te wijzen of af te drukken naar een andere variabele/array.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}'>

We hebben een deel uit de sportarray gehaald, dat wil zeggen het element tussen index 1 en 3, en dit toegewezen aan de arr-variabele, die ook een array is. De operator @ haalt alle elementen uit de array en vervolgens kunnen we de array splitsen tussen indices 1 en 3, zodat we de elementen 1,2 en 3 (cricket, hockey en honkbal) uit de sportarray hebben.

Definieer een statische array en druk de elementen van de array af

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$>

Op 2 manieren kunnen we elementen van een statische array afdrukken

Uitvoering van het programma

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here>

Het doorgeven van de opdrachtregelargumenten in een scriptbestand

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]}>

Het bovenstaande script kan worden uitgevoerd als

# Hier zijn Java, Python en Ruby opdrachtregelargumenten

f-snaar python
sh arrayCheck.sh Java Python Ruby>

Stappen voor het uitvoeren van scripts:

programmingArray=(Java Python Ruby)

#Java zal aanwezig zijn bij de 0e index, de grootte ervan kan op de onderstaande manier worden berekend

${#programmeringArray[0]}

Op dezelfde manier zal Python aanwezig zijn bij de eerste index. De grootte ervan kan op de onderstaande manier worden berekend

${#programmeringArray[1]}

Uitgang:

Het herhalen van de arraywaarden met behulp van for-lus

$@ geeft alle waarden weer die zijn doorgegeven via opdrachtregelargumenten en wordt opgeslagen in een array.

Het kan worden herhaald met behulp van de for-lus

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done>

Uitgang:

Laten we eens snel kijken naar wat elk symbool vertegenwoordigt

Syntaxis

Uitvoer
arr=()

arr[0]=3 Overschrijf 1e element

arr+=(4) Waarde(n) toevoegen

str=$(ls) Sla ls-uitvoer op als een string

arr=( $(ls) ) Sla ls-uitvoer op als een array van bestanden

${arr[@]:s:n} Haal n elementen op, beginnend bij index

#We kunnen een reeks waarden leveren

soortgelijk

arr=(één twee drie)

Om een ​​array te initialiseren
${arr[0]} Om het eerste element op te halen. Index begint altijd met 0
${arr[@]} Om alle elementen op te halen en vervolgens te herhalen, kunnen we in een lus herhalen
${!arr[@]} Om alleen array-indexen op te halen
${#arr[@]} Om de grootte van een array te berekenen
arr[2]=3 Om het derde element te overschrijven, moeten we het op deze manier gebruiken. Omdat de index bij 0 begint, is arr[2] correct.
arr+=(40) Om waarde(n) toe te voegen, kunnen we + gebruiken en vervolgens toewijzen met = en daarom wordt += gebruikt.
str=$(ls) Om de ls-opdrachtuitvoer op te slaan als een string (voorbeeld 4 wordt getoond voor deze uitvoer)
arr=( $(ls) ) Om ls-uitvoer op te slaan als een array van bestanden (voorbeeld 5 wordt getoond voor deze uitvoer)
${arr[@]:s:n} Om n elementen op te halen beginnend bij index s