Bash szótárak kapsz hash térképek és asszociatív tömbök Linux shell script. Megmutatjuk, hogyan kell használni ezeket hatékony és hasznos adatstruktúrák saját Linux shell script.
A rózsa más név
A hivatalos neve szótárak asszociatív tömbök. Ők is nevezik hash táblák és a hash térképeket. Ők egy adatstruktúrát hasonlóan működik szabályos elrendezésben, de jelentős különbség.
Egy tömb adatgyűjtés értékek tartott egy adatszerkezet. Eléréséhez az adatok bármelyike értékek, amelyek ismert tömb elemeit, meg kell tudni, hogy a helyzet a tömbben. Egy tömb elem helyzetét a tömb ismert az index, így az ilyen típusú tömbök ismert indexelt tömbök. Ők a leggyakrabban használt típusú tömbök.
Azonban nem az a hátránya. Hogyan érhetők el a tömb elemének, ha nem tudja a pozícióját a listán? Meg kell végigmenni az összes elemet a tömbben, teszteljük, hogy megtudjuk, hogy az érték az adott helyen az egyetlen, amit keres.
Az asszociatív tömbök leküzdeni ezt a kérdést. Nem használják egész egyedileg azonosítja mezőelemekhez. Ezek használata egyedi szavak ismert kulcsszavak. Lekérheti a értéke egy tömb elem segítségével a kulcsszó, függetlenül attól, hogy az hol helyezkedik belül a tömbben. Egy indexelt tömb, az egész számok képviselő pozíciókat a tömb növekvő sorrendben. A kulcsszavak egy asszociatív tömbben lehet bármilyen sorrendben.
Akkor nézd meg értéket egy asszociatív tömbben keres annak kulcsszó. Keresek egy szót, és visszakeresésére a kapcsolódó érték utánozza keresi fel egy szót a szótárban, és megállapította annak értelmét. Ezért az asszociatív tömböket ismert szótárak.
Bash 4.0 vagy magasabb
Az asszociatív tömbök támogatottak A Bash shell 4.0 vagy magasabb. Ha használja a jelenlegi Linux-disztribúció, akkor legyen finom. Ahhoz, hogy ellenőrizze a Bash változata, ezzel a paranccsal:
bash --version
A gép használt, találjon ezt a cikket Bash 5.1.4 telepítve, így még jól jöhet.
Alapelvek
Hogy hozzon létre egy asszociatív tömböt a terminál parancssor vagy egy script, akkor használja a Bash állapítsa parancsot. Az
-A
(Asszociatív) opció megmondja Bash, hogy ez lesz az asszociatív tömb, és nem indexelt tömb.
állapítsa -A betűszavak
Ez létrehoz egy asszociatív tömb az úgynevezett „rövidítések.”
Ahhoz, hogy néhány adat a mi tömb, meg kell, hogy kulcsszavakat és értékeket. Ezt megtehetjük a következő formátumban:
array-név [kulcs] = Érték
Adjunk hozzá néhány tömb elemeit:
mozaikszavak [ACK] = nyugtázás
mozaikszavak [BGP] = "Border Gateway Protocol"
mozaikszavak [CIDR] = "osztálynélküli Inter-Domain Routing"
mozaikszavak [DHCP] = "Dynamic Host Configuration Protocol"
mozaikszavak [EOF] = "end of frame"
Azok parancs meghatározza az öt tömb elemeit. Vegye figyelembe, hogy az értékek idézőjelek közé, ha van szóköz az értéket. A kulcsszó a bevitt ABC sorrendben, de lehet beírni bármilyen sorrendben tetszik. A kulcsszavak egyedinek kell lennie. Ha megpróbálja, hogy két bejegyzés azonos kulcsszó, a második érték, hogy adja meg felülírja az elsőt. Akkor is csak egy bejegyzés, hogy a kulcsszó, és ez lesz, amely a második értéket, amit hozzá.
Ahhoz, hogy megkapja értékeket a tömb, az általunk használt parancsok ebben a formátumban:
$ {array-név [kulcs]}
Tudjuk használni echo küldeni a kimenetet a terminál ablakban:
echo $ {mozaikszavak [ACK]}
echo $ {mozaikszavak [DHCP]}
használata Loops
A tömbök adnak arra, hogy használják a hurok nagyon jól. Az asszociatív tömbök sem kivétel. Loops hatékony módon hivatkozni egy műveletsor nélkül ismétlődő szakaszai kódot. Mielőtt megnézzük hurkok, van egy hatékony módja annak, hogy tömböt.
Elkészítjük a tömbök segítségével
kijelent
parancsot (ugyanazon
-A
lehetőség, mint korábban), de mi biztosítja a kulcsszavak és értékek listáját a parancssorban.
állapítsa -A országok = ([ALB] = Albánia [BHR] = Bahrain [CMR] = Kamerun [DNK] = Dánia [EGY] = Egyiptom)
A tömb neve „ország”, és hogy csatlakozik az értéklistákban egyenlőségjellel”
=
. " Az érték lista csomagolva zárójelben „
()
”És minden kulcsszót csomagolva zárójelben„
[]
„. Vegyük észre, hogy nincsenek vesszők elválasztó értékeket. Ha van egy karaktersorozatot tartalmazó terek, akkor be kell csomagolni idézőjelben.
Ahhoz, hogy egy asszociatív tömböt ad vissza kulcsszó érték helyett, adjunk hozzá egy felkiáltójel „
!
”Előtt a tömb nevét. Az a szimbólum „
@
”Lehet használni, mint egy helyettesítő, ami az összes tömb elemeit.
Ez
mert
loop kiírja az összes kulcsszó:
A kulcs a "$ {! Országokban [@]}"; do echo $ kulcs; történik
Megjegyezzük, hogy a kulcsszavak nem feltétlenül abban a sorrendben, hogy ők hozták létre, de ez nem számít. Az asszociatív tömbök nem hivatkozhat a rendezett index.
Azt is használhatja a paraméter bővítése felsorolni az összes kulcsszót. Fognak egyetlen sorban, nem soronként egyet.
echo "$ {! Országokban [@]}"
echo "$ {! Mozaikszavak [@]}"
Mi lehet gyarapítása
mert
hurok nyomtatni a kulcsszavakat és értékeket egyidejűleg.
a kulcs "$ {! Mozaikszavak [@]}"; do echo "$ kulcs - $ {mozaikszavak [$ kulcs]}"; történik
Ha meg akarjuk tudni, hogy hány elem van a tömbök, fel tudjuk használni a hash „#” jelet a tömb neve helyett egy felkiáltójel.
echo "$ {! Országokban [@]}"
echo "$ {! Mozaikszavak [@]}"
Annak ellenőrzése, hogy egy tömb elem létezik
Ha keres egy kulcsszó, de nincs ilyen tömb elemet, a visszatérési érték egy üres karakterlánc. Néha hasznos lehet egy másik indikátora az jelenlétét vagy hiányát egy tömb elem.
Tudjuk jelenlétének ellenőrzése tömb elemének a „
+ _
" operátor. Megjegyzendő, hogy ez után jön a kulcsszó, nem előtte a tömb nevét, mint a korábbi üzemeltetők láttunk.
, ha a [$ {mozaikszavak [EOF] + _}]; then echo "Talált"; else echo "Nem található"; fi
, ha a [$ {mozaikszavak [FTP] + _}]; then echo "Talált"; else echo "Nem található"; fi
A tömb elemet a kulcsszó „EOF” megtalálható a tömb, de a tömb eleme a kulcsszó „FTP” nem.
Hozzáadása Array Elements
Új elemekkel, hogy az asszociatív tömb egyszerű. Ellentétben néhány programozási nyelvek, akkor nem kell, hogy meghatározza a mérete a tömb, ha nyilvánítja. Tudod tartani, hogy új elemeket nem üti egy előre meghatározott felső határt.
Új elem, hogy a tömb, akkor használja a „
+ =
" operátor.
országok + = ([FJI] = Fidzsi)
echo "$ (# országokban [@]}"
echo $ {országokban [FJI]}
Az elemek száma a tömbben most hat, és keresi az új kulcsszó találja a tömb eleme, és visszaadja az értékét.
Eltávolítása Array elemek és tömbök
Az
hatástalanított
parancs eltávolítására használt tömb elemeinek. Ha a kulcsszó terek azt, csomagoljuk idézőjelben.
hatástalanítva mozaikszavak [EOF]
, ha a [$ {mozaikszavak [EOF] + _}]; then echo "Talált"; else echo "Nem található"; fi
Ahhoz, hogy távolítsa el az egész tömböt, használat
hatástalanított
a neve a tömbben.
hatástalanítva országokban
Változók használata a tömbök
Használata változók asszociatív tömbök egyszerű. Ebben a példában azt fogjuk beállítani egy változó kulcs a string „EOF.” Használni fogjuk a változó amikor egy új tömb elem a tömbben. Tulajdonképpen mi helyett a tömb eleme, hogy el kell hagyni korábban.
Az új tömbelemet az új kulcsszóval és a változó segítségével hívjuk fel. Ha a kulcsszó tartalmaz tereket, akkor meg kell csomagolnia a változó nevét idézőjelekben.
Key = EOF
Bekronms [$ Key] = "A keret vége"
Echo $ {acronims [eo]}
Echo $ {rövidítések [$ billentyű]}
Kreatív
A példák voltak információgyűjtemények ahol minden tömb elem független az összes többi, mint egy szótárban. Mindegyik egyedülálló definíció. De az asszociatív tömbök ugyanolyan könnyen tartani a különböző információkat az összes kapcsolódó egy dolog, mint például a leírások különböző darabjainak számítógépes hardver:
Deklare -A specifikáció
Specifikáció [CPU] = "Dual Core AMD Ryzen 5 3600"
Specifikáció [Speed] = "3600 MHz"
Specifikáció [kernel] = "5.11.0-17-generikus x86_64"
Specifikáció [MEM] = "1978.5 MIB"
Specifikáció [Tárolás] = "32 Gib"
Specifikáció [Shell] = "Bash"
Echo $ {specifikáció [CPU]}
Írásban hatékonyan nyelven azt jelenti, tudva mechanizmusok és struktúrák, hogy kínál, és kiválasztja a legmegfelelőbb az a probléma, hogy próbál megoldani. Az asszociatív tömbök kapsz egy könnyen használható módon az adatok tárolására, hogy kereshet név, mint egy szótár.