Familiarizați-vă cu matricele Bash - cum să le declarați, să le manipulați și să le ștergeți.

Matricele sunt depozite de date utilizate pentru a păstra valori care au o anumită relație între ele. Spre deosebire de majoritatea limbajelor de programare, tablourile Bash pot stoca valori ale diferitelor tipuri de date în aceeași matrice.

Bash are două tipuri de tablouri: tablouri indexate și tablouri asociative. Pentru tablourile indexate, indecșii încep de la 0 la (n-1), așa cum este obișnuit în majoritatea limbilor. Cu toate acestea, matricele din Bash sunt rare. Aceasta înseamnă că puteți aloca elementul de matrice (n-1) fără a fi atribuit elementul (n-2).

În acest tutorial, veți învăța cum să lucrați cu matrice în Bash. Să începem.

Definirea matricelor

Există trei moduri în care puteți defini matrice în Bash. Similar cu variabilele Bash, matricele trebuie inițializate la creare. Singura excepție de la aceasta este dacă utilizați declara cuvânt cheie. De asemenea, trebuie să vă asigurați că nu este lăsat spațiu pe oricare parte a operatorului de atribuire în timp ce inițializați matricea.

instagram viewer

Prima metodă este atribuirea compusă a valorilor numelui matricei. Există două moduri de a face acest lucru:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

În prima atribuire compusă, valorile dintre parantezele rotunde sunt atribuite secvenţial din index [0] la [3].

Cu toate acestea, în al doilea, valorile sunt atribuite unui index în orice ordine a indicat-o programatorul.

Legate de: Ce sunt variabilele de mediu în Linux? Tot ce trebuie să știți

Dacă ai luat atent la arr2, vei observa acel index [2] a fost lăsat afară. Matricea va fi creată în continuare fără erori. Această misiune este de fapt o demonstrație a stocării rare în matricele Bash, așa cum am atins mai devreme.

Observați că nu există virgule care separă valorile matricei. Valorile sunt pur și simplu separate prin spații.

A doua metodă declară indirect matricea. Puteți începe să atribuiți valori elementelor matricei nule:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

A treia modalitate este de a declara în mod explicit matricea cu cuvântul cheie declara:

declare -a arrayName

Operațiuni pe matrice

Pentru a accesa elementele matricei, utilizați această sintaxă: ${array[index]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Dacă trebuie să imprimați întreaga matrice, utilizați @ simbol ca

index de ${array[index]}:

echo${fruits[@]}

Pentru a afla numărul de elemente din matrice, utilizați # simbol după cum se arată mai jos:

echo ${#fruits[1]}

De asemenea, poate fi necesar să modificați elementele matricei - vedeți exemplul de mai jos despre cum să faceți acest lucru. Este similar cu modul în care adăugați un element nou. Singura diferență este că înlocuiți o valoare cu un index care are deja o valoare.

fruits[1]=pears

Matrice asociative

O matrice care are valori arbitrare ca chei este numită matrice asociativă. Aceste matrice sunt folosite pentru a stoca perechi cheie-valoare asociate.

Legate de: Cum să transformați scripturile Bash în aplicații pe care se poate face clic folosind AppleScript

Pentru a defini o matrice asociativă, trebuie să faceți acest lucru în mod explicit folosind cuvântul cheie declara.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

Puteți accesa un element membru în același mod în care faceți matricele indexate:

echo${animal[lion]}

Dacă doriți să imprimați toate valorile, puteți utiliza @ simbol după cum se arată mai jos:

echo${animal[@]}

Dacă doriți să imprimați toate cheile matricei, puteți utiliza @ și ! simboluri, după cum se arată mai jos:

echo${!animal[@]}

Pentru a găsi numărul de elemente pe care le are tabloul asociativ, utilizați aceeași sintaxă pe care ați folosi-o cu tablourile indexate (demonstrată în ultima secțiune).

Dacă doriți să ștergeți un element de matrice sau întreaga matrice, utilizați sintaxa de mai jos:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Folosind comanda printf

Poate ați observat că întregul articol folosește ecou comandă pentru a scoate date în shell. The ecou comanda funcționează pentru acest tutorial, dar are puține caracteristici și flexibilitate atunci când vine vorba de formatarea șirurilor.

Însă printf comanda oferă opțiuni de formatare mai specifice, care fac scripting-ul Bash o ușoară. Învățarea printf funcția vă va îmbunătăți cu siguranță experiența de formatare a șirurilor și eficiența în Bash.