Ce sunt dicționarii de bash pe Linux și cum le folosiți?

Jun 16, 2025
Linux
FatmAwati Achmad Zaenuri / Shutterstock.com

Bash Dicționare vă oferă hărți hash și matrice asociative în scripturile Linux Shell. Vă vom arăta cum să utilizați aceste structuri de date puternice și utile în propriile scripturi Shell Linux.

Un trandafir prin orice alt nume

Numele formal pentru dicționarele este matricele asociative. Se numesc, de asemenea, tabele hash și hărți hash. Sunt o structură de date care funcționează în mod similar cu o matrice obișnuită, dar cu o diferență semnificativă.

O matrice este o colecție de valori ale datelor deținute într-o singură structură de date. Pentru a accesa oricare dintre valorile datelor, care sunt cunoscute ca elemente de matrice, trebuie să cunoașteți poziția lor în matrice. Poziția elementului de matrice în matrice este cunoscută ca indice, astfel încât aceste tipuri de matrice sunt cunoscute sub numele de matrice indexate. Sunt cele mai frecvent utilizate tipuri de masteraturi.

Cu toate acestea, ei au un dezavantaj. Cum accesați un element de matrice dacă nu cunoașteți poziția în listă? Trebuie să parcurgeți toate elementele din matrice, testarea pentru a vedea dacă valoarea la acea locație este cea pe care o căutați.

Rețelele asociative depășesc această problemă. Ei nu utilizează numere întregi la identificarea unică a elementelor de matrice. Ei folosesc cuvinte unice cunoscute sub numele de cuvinte cheie. Puteți prelua valoarea pentru un element de matrice utilizând cuvântul său cheie, indiferent de locul în care este poziționat în matrice. Cu o matrice indexată, numerele întregi reprezentând pozițiile din matrice sunt în ordine ascendentă. Cuvintele cheie într-o matrice asociativă pot fi în orice ordine.

Puteți căuta o valoare într-o matrice asociativă prin căutarea cuvântului său cheie. Privind un cuvânt și recuperarea valorii sale asociate MIMICS privind un cuvânt într-un dicționar și găsind sensul său. De aceea, rețelele asociative sunt cunoscute ca dicționare.

Bash 4.0 sau mai mare

Arrays asociative sunt acceptate în coaja de bash versiunea 4.0 sau mai mare. Dacă utilizați o distribuție curentă Linux, ar trebui să fiți bine. Pentru a verifica versiunea dvs. de bash, utilizați această comandă:

 Bash --versiunea 

Mașina utilizată pentru a cerceta acest articol a fost instalat Bash 5.1.4, așa că suntem bine să mergem.

Principii de baza

Pentru a crea o matrice asociativă pe linia de comandă a terminalului sau într-un script, folosim comanda Bash Declare. În -A (Opțiunea asociativă) spune Bash că aceasta va fi o matrice asociativă și nu o matrice indexată.

 Declara -a acronime 

Acest lucru creează o matrice asociativă numită "acronime".

Pentru a pune niște date în matricea noastră, trebuie să oferim cuvinte cheie și valori. Putem face acest lucru folosind acest format:

 ARRAY-NAME [cheie] = valoare 

Să adăugăm câteva elemente de matrice:

 acronime [ACK] = confirmare 
 Acronime [BGP] = "Protocolul gateway de frontieră" 
 Acronime [Cidr] = "Routing inter-domeniu fără clasă" 
 Acronyms [DHCP] = "Protocolul dinamic de configurare a gazdei" 
 acronime [EOF] = "capătul cadrului" 

Aceste comenzi definesc cinci elemente de matrice. Rețineți că valorile sunt înfășurate în ghilimele dacă există spații în valoare. Cuvintele noastre cheie au fost introduse în ordine alfabetică, dar pot fi introduse în orice ordine doriți. Cuvintele cheie trebuie să fie unice. Dacă încercați să creați două intrări cu același cuvânt cheie, a doua valoare pe care o introduceți va suprascrie primul. Încă veți avea doar o singură intrare cu acest cuvânt cheie și va fi asociat cu a doua valoare pe care ați adăugat-o.

Pentru a prelua valorile din matrice, folosim comenzi în acest format:

 $ {matrice-nume [cheie]} 

Putem folosi ecoul pentru a trimite ieșirea în fereastra terminalului:

 Echo $ {acronyms [ack]} 
 Echo $ {acronyms [dhcp]} 

Folosind bucle

Arrays se adresează foarte bine în bucle. Arrays asociativă nu fac excepție. Buclele oferă modalități eficiente de invocare a unei secvențe de acțiuni fără secțiuni repetitive de cod. Înainte de a ne uita la bucle, există o modalitate eficientă de a declara matrice.

Creăm matricele folosind declara comanda (la fel -A Opțiunea ca înainte), dar oferim cuvintele cheie și valorile ca o listă pe linia de comandă.

 Declară -A Țări = ([Alb] = Albania [BHR] = Bahrain [CMR] = Camerun [DNK] = Danemarca [Egy] = Egipt) 

Numele matricei este "țări" și este conectat la lista de valori printr-un semn egal " =. ". Lista de valori este înfășurată în paranteze " () "Și fiecare cuvânt cheie este înfășurat în paranteze" [] ". Rețineți că nu există virgule care să separe valorile. Dacă aveți un șir de valoare care conține spații, va trebui să o împachetați în ghilimele.

Pentru a face o matrice asociativă returnați un cuvânt cheie în loc de valoare, adăugați un punct de exclamare " A! "În fața numelui matricei. Simbolul la " @ "Poate fi folosit ca un wildcard, adică toate elementele de matrice.

Acest pentru LOOP va lista toate cuvintele cheie:

 Pentru cheia în "$ {țări [@]}"; Faceți cheia Echo $; Terminat 

Rețineți că cuvintele cheie nu sunt neapărat enumerate în ordinea în care au fost create, dar asta nu contează. Marginea asociativă nu se bazează pe un index ordonat.

De asemenea, putem utiliza expansiunea parametrilor pentru a lista toate cuvintele cheie. Vor fi listate pe o singură linie, nu pe o linie.

 Echo "$ {! Țări [@]}" 
 Echo "$ {! Acronyms [@]}" 

Ne putem mări pentru buclă pentru a imprima în același timp cuvintele cheie și valorile.

 Pentru cheia în "$ {acronyms [@]}"; do eco "key $ - $ {acronyms [key $]}"; Terminat 

Dacă vrem să știm câte elemente există în matrice, putem folosi un hash "#" în fața numelui matricei în loc de un punct de exclamare.

 Echo "$ {! Țări [@]}" 
 Echo "$ {! Acronyms [@]}" 

Verificați dacă există un element de matrice

Dacă căutați un cuvânt cheie, dar nu există un astfel de element de matrice, valoarea de returnare va fi un șir gol. Uneori este util să aveți un indicator diferit pentru prezența sau absența unui element de matrice.

Putem verifica prezența unui element de matrice folosind " + _ "Operator. Rețineți că acest lucru vine după cuvântul cheie, nu în fața numelui matricei, cum ar fi operatorii anteriori pe care l-am văzut.

 Dacă [$ {acronime [EOF] + _}]; apoi ecou "găsit"; altfel ecou "nu a fost găsit"; FI 
 Dacă [$ {acronyms [ftp] + _}]; apoi ecou "găsit"; altfel ecou "nu a fost găsit"; FI 

Elementul de matrice cu cuvântul cheie "EOF" se găsește în matrice, dar elementul de matrice cu cuvântul cheie "FTP" nu este.

Adăugarea elementelor de matrice

Adăugarea de noi elemente la o matrice asociativă este ușoară. Spre deosebire de unele limbi de programare, nu este nevoie să definiți dimensiunea matricei dvs. atunci când declarați. Puteți continua să adăugați noi elemente fără a atinge o limită superioară predefinită.

Pentru a adăuga un element nou la matrice, folosim " + =. "Operator.

 Țări + = ([FJI] = FIJI) 
 Echo "$ (# Țări [@]}" 
 ECHO $ ​​{Țări [FJI]} 

Numărul elementelor din matrice este acum șase, iar căutarea noului cuvânt cheie găsește elementul de matrice și returnează valoarea acestuia.

Eliminarea elementelor și a matricei

În Ungere comanda este utilizată pentru a elimina elementele de matrice. Dacă cuvântul cheie are spații în el, împachetați-l în ghilimele.

 Acronime de desfacere [EOF] 
 Dacă [$ {acronime [EOF] + _}]; apoi ecou "găsit"; altfel ecou "nu a fost găsit"; FI 

Pentru a elimina întreaga matrice, utilizați Ungere cu numele matricei.

 Țările vizate 

Folosind variabile cu matrice

Utilizarea variabilelor cu matrice asociative este simplă. În acest exemplu, vom stabili o cheie variabilă a șirului "EOF". Vom folosi variabila atunci când adăugăm un nou element de matrice la matrice. De fapt, înlocuim elementul de matrice pe care l-am șters mai devreme.

Vom prelua noul element de matrice, apelându-l cu noul cuvânt cheie și, de asemenea, utilizând variabila. Dacă cuvântul cheie conține spații, va trebui să înfășurați numele variabilei în ghilimele.

 Key = EOF 
 acronime [$] = "capătul cadrului" 
 ECHO $ ​​{Acronyms [EOF]} 
 ECHO $ ​​{Acronyms [$ cheie]} 

Obțineți creativi

Exemplele noastre au fost colecții de informații în care fiecare element de matrice este independent de toate celelalte, la fel ca un dicționar. Fiecare este o definiție unică. Dar marginea asociativă pot purta la fel de ușor o varietate de informații toate legate de un singur lucru, cum ar fi specificațiile diferitelor bucăți de hardware de calculator:

 Declarația - o specificație 
 Specificații [CPU] = "Dual Core AMD Ryzen 5 3600" 
 Specificații [viteză] = "3600 MHz" 
 Specificații [kernel] = "5.11.0-17-generic x86_64" 
 Specificații [MEM] = "1978,5 MIB" 
 Specificații [Storage] = "32 GIB" 
 Specificații [Shell] = "Bash" 
 ECHO $ ​​{Specificații [CPU]} 

Scrierea eficientă într-o limbă înseamnă cunoașterea mecanismelor și structurilor pe care le oferă și selectarea celei mai potrivite pentru problema pe care încercați să o rezolvați. Arrays asociative vă oferă un mod ușor de stocat de stocare a datelor pe care le puteți căuta după nume, la fel ca un dicționar.


Linux - Cele mai populare articole

Cele mai bune distribuții Linux fără sistem

Linux Feb 24, 2025

BMJ / Shutterstock.com. Când distribuția dominantă Linux au adoptat Systemd. , Distribuțiile au forțat distribuțiile și au început proiecte ..


Cum se procesează o linie de fișier pe linie într-un script de bash Linux

Linux Feb 3, 2025

FatmAwati Achmad Zaenuri / Shutterstock Este destul de ușor să citiți conținutul unei linii de fișier text Linux pe linie într-un script de coajă - at..


Cum se actualizează Arch Linux

Linux Jul 30, 2025

Proiectul Ubuntu. A venit timpul să vă actualizați sistemul Arc Linux? Fie că sunteți pe arc pur sau o distro-ul bazat pe arc Manjaro. Și Ga..


Ce este nou în Debian 11 "Bullseye"

Linux Jul 22, 2025

Debian. , Progenitorul multor alte distribuții Linux, a făcut eliberarea 11 disponibilă în etapa de testare. Cântăriți virtuțile de modernizare sau sunteți doar curioș..


Se pare Linux 30: Cum un hobby proiect Cucerit lume

Linux Sep 17, 2025

Larry Ewing și Gimp Pe 17 septembrie 1991 , Linus Torvalds a lansat pentru prima dată kernel Linux (versiunea 0.01). Iată o scurtă privire la mo..


Cum se instalează Linux pe un MC Mac cu siliciu de mere

Linux Nov 11, 2024

Suportul nativ Linux pentru noua arhitectură bazată pe ARM, nu este încă gata, dar puteți rula Linux pe un M1. , M1 Pro sau M1 Max folosind a mașină virtuală ..


Cum se adaugă un utilizator la fișierul sudoers din Linux

Linux Oct 30, 2025

În cazul în care o sudo Comanda de pe Linux vă primește un mesaj potrivit căruia un utilizator „nu este în fișierul sudoers”, va trebui să primiți pe lista „sudoers”..


Cum să enumerați variabilele de mediu pe Linux

Linux Oct 31, 2025

Pe Linux, variabilele de mediu dețin valori și setări importante. Scripturile, aplicațiile și scoicile citesc aceste valori, adesea pentru a se configura sau pentru a le controla comportam..


Categorii