Matrice sunt concepte importante în programare sau scripting. Matricele ne permit să stocăm și să recuperăm elemente într-o formă de listă care poate fi folosită pentru anumite sarcini. În bash, avem și matrice care ne ajută să creăm scripturi în linia de comandă pentru stocarea datelor într-un format de listă. În acest articol, vom înțelege elementele de bază ale matricelor în scripting bash.
Crearea de tablouri
Pentru a crea o matrice de bază într-un script bash, putem folosi declararea -A comanda urmată de numele variabilei matricei pe care doriți să o dați.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball )>
SAU
#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball>
Valoarea elementelor poate fi orice număr întreg sau șiruri de caractere sau orice altă formă de date, după cum se dorește. Putem vedea că matricea este declarată într-un script bash în două moduri, primul pare mai convenabil și mai puțin agitat de declarat. Dacă vrem să declarăm matricea dintr-o singură mișcare, prima este alegerea optimă, dar dacă elementele urmează să fie adăugate în bucăți, cea din urmă este o alegere bună.
Imprimarea matricelor
După declararea matricei, dacă dorim să afișam toate elementele din matrice, putem folosi simbolul @.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}'> 
echo '${array_name[@]}'> Folosim [@] ca index al matricei pentru a afișa toate elementele. Toate elementele sunt imprimate cu spații separate, ghilimelele din jurul variabilei se extind și imprimă toate elementele din matrice.
Iterarea peste Array
Pentru a itera pe o matrice câte un element, putem folosi bucle și efectua orice operație în corpul acestuia.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i
' done> 
După cum putem vedea, am folosit o buclă for pentru a imprima elementul din matrice unul câte unul. Am folosit trucul din secțiunea anterioară de a obține toate elementele matricei și de a repeta peste ele unul câte unul într-o buclă for. ${array_name[@]} se extinde în toate elementele din matrice și bucla for iterează peste ele unul câte unul cu iteratorul din exemplul acesta este variabila i , în interiorul corpului buclei for tipărim variabilă/iterator i și astfel iterează peste matrice.
Obțineți numărul de elemente din Array
Pentru a prelua numărul de elemente ale matricei, putem folosi operatorul # înaintea numelui matricei în s în ${array_name[@]}.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}'> 
Revenim astfel dimensiunea matricei folosind comanda ${#sport[@]}, # este folosit pentru a obține dimensiunea variabilei de lângă ea, folosind ghilimelele duble se evaluează valoarea comenzii și obținem numărul elementelor din matrice după cum se dorește.
Inserarea unui element în Array
Pentru a insera un element este destul de simplu, trebuie să setăm indexul corespunzător al elementului, urmat de valoarea elementului pe care ți-a plăcut să-l dai.
#!/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[@]}'> 
Am adăugat al 5-lea element (al 4-lea index) în matrice și am modificat/editat, de asemenea, al 3-lea element al matricei (al doilea indice). The arrayname[index]=valoare sunt toate trucurile pentru a adăuga, modifica sau inițializa elementele matricei.
De asemenea, putem adăuga elemente la o matrice folosind operatorul +=.
#!/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[@]}'> 
După cum se vede în exemplu, putem adăuga mai multe elemente la matrice cu cod minim. Folosim array_name+=(elements) pentru a adăuga elemente la matrice.
Ștergerea unui element din Array
Pentru a șterge un element din matrice, putem folosi comanda unset. Comanda preia numele variabilei în cazul nostru numele matricei și indexul acelui element. Indicele poate fi, de asemenea, relativ, adică -1 indicând ultimul element și -2 până la ultimul și așa mai departe.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}'> 
După cum putem vedea, unset arrayname[index] va șterge elementul de la index din matrice. De asemenea, dimensiunea matricei a fost redusă la 3 din 4, ceea ce indică faptul că elementul este eliminat în întregime și nu doar înlocuit cu spații albe.
Folosind indici relativi
Dacă folosim indici ca -1,-2 și așa mai departe, elementele sunt referite de la ultimul element și, prin urmare, le putem șterge sau modifica cu ordonare relativă și din spate.
#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}'> 
După cum putem vedea, indexul 1 este, de asemenea, referit ca -3 din spate și, prin urmare, devine relativ mai ușor să faceți referire la anumite elemente într-o matrice mare.
Îmbinați o matrice
Putem îmbina (să scoateți o poțiune) o matrice pentru a o aloca sau tipări la o altă variabilă/matrice.
#!/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[@]}'> 
Am scos o bucată din matricea sport, adică elementul dintre indexul 1 și 3 inclusiv și l-am atribuit variabilei arr, care este, de asemenea, o matrice. Operatorul @ primește toate elementele din matrice și apoi putem îmbina matricea între indicii 1 și 3, astfel încât să avem elementele la 1, 2 și 3 (cricket, hochei și baseball) din matricea sport.
Definiți o matrice statică și imprimați elementele matricei
#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[*]$> 
În 2 moduri putem imprima elemente de matrice statică
Execuția programului
sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here>

Trecerea argumentelor liniei de comandă într-un fișier script
#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]}> 
Scriptul de mai sus poate fi executat ca
# Aici Java, Python și Ruby sunt argumente în linia de comandă
șir de mai multe linii javascript
sh arrayCheck.sh Java Python Ruby>
Pașii de execuție a scriptului:
programmingArray=(Java Python Ruby)
#Java va fi prezent la indexul 0, dimensiunea acestuia poate fi calculată în modul de mai jos
${#programmingArray[0]}
În mod similar, Python va fi prezent la primul index, dimensiunea acestuia poate fi calculată în modul de mai jos
${#programmingArray[1]}
Ieșire:

Iterarea valorilor matricei folosind bucla for
$@ va da toate valorile care au fost transmise prin argumente din linia de comandă și este stocată într-o matrice.
Poate fi repetat folosind bucla for
declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done> 
Ieșire:

Să aruncăm o privire rapidă asupra a ceea ce reprezintă fiecare simbol
| Sintaxă | Ieșire |
| arr=() | arr[0]=3 Suprascrierea primului element arr+=(4) Adăugați valori str=$(ls) Salvați ieșirea ls ca șir arr=( $(ls) ) Salvați ieșirea ls ca o matrice de fișiere ${arr[@]:s:n} Preluați n elemente începând de la index |
| #Putem oferi un set de valori ca aceasta arr=(unu doi trei) | Pentru a inițializa o matrice |
| ${arr[0]} | Pentru a prelua primul element. Indicele începe întotdeauna cu 0 |
| ${arr[@]} | Pentru a prelua toate elementele și apoi putem repeta într-o buclă |
| ${!arr[@]} | Pentru a prelua indicii de matrice singur |
| ${#arr[@]} | Pentru a calcula dimensiunea unui tablou |
| arr[2]=3 | Pentru a suprascrie al treilea element, trebuie să-l folosim în acest fel. Deoarece indexul începe de la 0, arr[2] este corect. |
| arr+=(40) | Pentru a adăuga valori, putem folosi + și apoi alocați cu = și, prin urmare, se folosește +=. |
| str=$(ls) | Pentru a salva ieșirea comenzii ls ca șir (exemplul 4 este afișat pentru această ieșire) |
| arr=( $(ls) ) | Pentru a salva ieșirea ls ca o matrice de fișiere (exemplul 5 este afișat pentru această ieșire) |
| ${arr[@]:s:n} | Pentru a prelua n elemente începând cu indexul s |