Matriser er viktige begreper innen programmering eller skripting. Matriser lar oss lagre og hente elementer i en listeform som kan brukes til visse oppgaver. I bash har vi også arrays som hjelper oss med å lage skript på kommandolinjen for å lagre data i et listeformat. I denne artikkelen vil vi forstå det grunnleggende om arrays i bash-skripting.
Opprette matriser
For å lage en grunnleggende array i et bash-skript, kan vi bruke declare -en kommando etterfulgt av navnet på matrisevariabelen du vil gi.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball )>
ELLER
#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball>
Verdien av elementene kan være et hvilket som helst heltall eller strenger eller hvilken som helst annen form for data etter ønske. Vi kan se at arrayet er deklarert i et bash-skript på to måter, førstnevnte virker mer praktisk og mindre hektisk å erklære. Hvis vi ønsker å deklarere matrisen på én gang, er førstnevnte det optimale valget, men hvis elementene skal legges til i biter og stykker, er sistnevnte et godt valg.
Skrive ut matrisene
Etter å ha erklært matrisen, hvis vi ønsket å vise alle elementene i matrisen, kan vi bruke @-symbolet.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}'> 
echo '${array_name[@]}'> Vi bruker [@] som en indeks til matrisen for å vise alle elementene. Alle elementene er trykt med mellomromsseparerte, Anførselstegnene rundt variabelen utvides og skriver ut alle elementene i matrisen.
Itererer over matrisen
For å iterere over en matrise ett element om gangen, kan vi bruke løkker og utføre alle operasjoner i hoveddelen av det.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i
' done> 
Som vi kan se har vi brukt en for-løkke for å skrive ut elementet fra matrisen en etter en. Vi har brukt trikset i forrige seksjon med å få alle elementene i arrayet og iterere over det én etter én i for en loop. ${array_name[@]} utvides til alle elementene i matrisen og for-løkken itererer over dem én etter én med iteratoren i eksemplet. variabel i , inne i kroppen av for-løkken skriver vi ut variabel/iterator i og dermed iterere over matrisen.
Få antall elementer i matrisen
For å hente nummeret på elementene array kan vi bruke #-operatoren foran array-navnet i s-ene i ${array_name[@]}.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}'> 
Vi returnerer dermed størrelsen på matrisen ved å bruke kommandoen ${#sport[@]}, # brukes for å få størrelsen på variabelen ved siden av, ved å bruke doble anførselstegn evalueres verdien av kommandoen og vi får antall elementer i matrisen som ønsket.
Sette inn et element i Array
Å sette inn et element er ganske enkelt, vi må angi elementets passende indeks etterfulgt av verdien til elementet du likte å gi.
#!/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[@]}'> 
Vi har lagt til det 5. elementet (4. indeks) i arrayet og også modifisert/redigert arrayets 3. element (2. indeks). De matrisenavn[indeks]=verdi er alle triksene for å legge til, modifisere eller initialisere elementene i matrisen.
Vi kan også legge til elementer i en matrise ved å bruke +=-operatoren.
#!/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[@]}'> 
Som vist i eksempelet, kan vi legge til flere elementer til matrisen med minimal kode. Vi bruker array_name+=(elements) for å legge til elementer til arrayen.
Sletter et element fra Array
For å slette et element fra matrisen kan vi bruke kommandoen unset. Kommandoen tar inn navnet på variabelen i vårt tilfelle matrisenavnet og indeksen til det elementet. Indeksen kan også være relativ, dvs. -1 som indikerer det siste elementet og -2 til nest sist og så videre.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}'> 
Som vi kan se vil unset arrayname[index] slette elementet ved index fra arrayet. Størrelsen på matrisen er også redusert til 3 fra 4, noe som indikerer at elementet er fullstendig fjernet og ikke bare erstattet med mellomrom.
Bruker relative indekser
Hvis vi bruker indekser som -1,-2, og så videre, refereres elementene fra det siste elementet, og derfor kan vi slette eller endre dem med relativ rekkefølge bakfra også.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}'> 
Som vi kan se er indeks 1 også referert til som -3 fra baksiden, og derfor blir det relativt lettere å referere til enkelte elementer i en stor matrise.
Spleis en Array
Vi kan spleise (ta ut en potion) en matrise for å ta tilordne eller skrive den ut til en annen variabel/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[@]}'> 
Vi har tatt ut en del fra sportsarrayet, dvs. elementet mellom indeks 1 og 3 inklusive, og tilordnet det til arr-variabelen som også er en matrise. @-operatoren henter alle elementene fra matrisen og så kan vi spleise matrisen mellom indeksene 1 og 3 slik at vi har elementene på 1,2 og 3 (cricket, hockey og baseball) fra sportsarrayen.
Definer en statisk matrise og skriv ut elementene i matrisen
#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[*]$> 
På 2 måter kan vi skrive ut elementer av statisk array
Programutførelse
sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here>

Sende kommandolinjeargumentene i en skriptfil
#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]}> 
Skriptet ovenfor kan kjøres som
# Her er Java, Python og Ruby kommandolinjeargumenter
ordbok c#
sh arrayCheck.sh Java Python Ruby>
Skriptkjøringstrinn:
programmeringArray=(Java Python Ruby)
#Java vil være til stede på den 0. indeksen, størrelsen kan beregnes på følgende måte
${#programmingArray[0]}
På samme måte vil Python være til stede ved den første indeksen, størrelsen kan beregnes på følgende måte
${#programmingArray[1]}
Produksjon:

Itererer matriseverdiene ved å bruke for loop
$@ vil gi alle verdiene som ble sendt via kommandolinjeargumenter, og den er lagret i en matrise.
Det kan gjentas ved å bruke for-løkken
declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done> 
Produksjon:

La oss ta en rask titt på hva hvert eneste symbol representerer
| Syntaks | Produksjon |
| arr=() | arr[0]=3 Overskriv 1. element arr+=(4) Legg til verdi(er) str=$(ls) Lagre ls-utdata som en streng arr=( $(ls) ) Lagre ls-utdata som en rekke filer ${arr[@]:s:n} Hent n elementer fra indeksen |
| #Vi kan tilby sett med verdier som dette arr=(en to tre) | For å initialisere en matrise |
| ${arr[0]} | For å hente det første elementet. Indeks starter alltid med 0 |
| ${arr[@]} | For å hente alle elementer og deretter kan vi iterere i en loop |
| ${!arr[@]} | For å hente array-indekser alene |
| ${#arr[@]} | For å beregne størrelsen på en matrise |
| arr[2]=3 | For å overskrive 3. element må vi bruke det på denne måten. Siden indeksen starter på 0, er arr[2] riktig. |
| arr+=(40) | For å legge til verdi(er), kan vi bruke + og deretter tilordne med = og dermed brukes +=. |
| str=$(ls) | For å lagre ls-kommandoutdata som en streng (eksempel 4 vises for denne utgangen) |
| arr=( $(ls) ) | For å lagre ls-utdata som en rekke filer (eksempel 5 vises for denne utgangen) |
| ${arr[@]:s:n} | For å hente n elementer som starter på indeks s |