GNU/Linux >> Znalost Linux >  >> Linux

Asociativní pole v Bash

Každý programátor ví, jak životně důležité jsou proměnné. Proměnné fungují jako přechodové stanice pro kodéry/programátory, kde si předávají informace tam a zpět. Proměnné jsou obecně klíčové ve výpočetní technice, protože umožňují, aby byl kód dynamický. Jinými slovy, proměnné se označují jako zástupné symboly informací, které se opakovaně mění v závislosti na jejich použití. Nicméně významný problém, který ovlivnil většinu kodérů a programátorů, je sledování mnoha proměnných v projektu.

To bývá pro většinu programátorů v oboru na obtíž. Existuje jedno konečné řešení tohoto problému, kterým jsou pole. Pole v programování je známé jako datová struktura, která ukládá prvky se stejným datovým typem. Pole jsou ideální pro ukládání kolekce dat. Pole mají velký význam pro téměř všechny kódovací jazyky, nezapomínáme ani na skriptovací jazyky, jako je Bash. Tento článek se více zaměří na asociativní pole v Bash.

Je známo, že skriptovací jazyky Shell nabízejí uživatelům možnost vytvářet, dotazovat se, aktualizovat a manipulovat s indexovanými poli. Nenechte se zmást pojmem indexovaná pole, protože se jedná o seznam položek s předponou číslem. Seznam a přidělené číslo je zabaleno do proměnné, což usnadňuje prezentaci vašeho kódu.

Asociativní pole v Bash

Skriptovací jazyk Bash má další výhodu, protože může vytvářet asociativní pole a zachází s poli jako s normálním polem. Primární funkce asociativního pole umožňuje uživateli vytvářet seznamy obsahující klíče/indexy a hodnoty, nikoli pouze číslované hodnoty. Funkce asociativních polí byla zahrnuta do bash 4, což znamená, že než začneme, podíváme se na aktuální verzi Bash pomocí příkazového řádku níže:

bash --version

Výstup

Pokud vaše bash verze není verze 4 a vyšší, budete ji muset aktualizovat, aby fungovala. Nemějte obavy, protože jednotlivé kroky jsou přímočaré. Bash lze aktualizovat na serveru Ubuntu pomocí slavného příkazu apt-get. Někteří uživatelé mohou vyžadovat upgrade svého Bash, a to tak, že otevřete svůj terminál a spusťte následující příkazy:

sudo apt-get install --only-upgrade Bash

Příkaz aktualizuje bash shell na nejnovější verzi ve vašem operačním systému Ubuntu. Chcete-li se ujistit, že aktualizace je úspěšná, spusťte příkaz výše a zkontrolujte nainstalovanou/aktualizovanou verzi shellu bash (verze Bash). Tento příkaz vytiskne konzolu s aktuální verzí bash shellu na vašem serveru Ubuntu.
Pokud v některých případech nemáte na serveru Ubuntu nainstalovaný Bash, nezlobte se. Spusťte níže uvedené příkazy a nainstalujte Bash:

sudo apt update
sudo apt install bash

Deklarace a inicializace asociativního pole

V Bash lze asociativní pole deklarovat pomocí klíčového slova ‚declare.‘ Na druhou stranu prvky pole lze inicializovat během deklarace pole nebo po deklaraci proměnné. Skript níže vytvoří pole s názvem assArray1 a ostatní čtyři hodnoty pole se individuálně inicializují, jak je uvedeno

declare -A assArray1
assArray1[fruit]=Mango
assArray1[bird]=Cockatail
assArray1[flower]=Rose
assArray1[animal]=Tiger

Výstup

Během deklarace pole následující skript s názvem assArray2 inicializuje asociativní pole. V době deklarace jsou definovány tři hodnoty pole s klíči.

declare -A assArray2=( [HDD]=Samsung [Monitor]=Dell [Keyboard]=A4Tech )

Výstup

Jak získat přístup k asociativnímu poli

Existují dvě formy, kterými může uživatel přistupovat k asociativnímu poli. Za prvé k nim lze přistupovat jednotlivě a za druhé k nim lze přistupovat pomocí smyčky. Nedělejte si starosti s výše uvedenými způsoby, protože budou zahrnuty v tutoriálu. Upozorňujeme, že klíče a hodnoty pole lze vytisknout společně nebo samostatně. Zadáním hodnoty klíče vypíše níže uvedený příkazový řádek dvě hodnoty pole. Pro ilustraci použijeme assArray1.

echo ${assArray1[bird]}
echo ${assArray1[flower]}

Výstup

Po spuštění výše zvýrazněných příkazových řádků uvidíte podobnou obrazovku jako níže.

Při tisku budete někdy muset vytisknout všechny klíče a hodnoty pole. To lze provést pomocí rozšíření obvodu bash nebo smyčky. Nejprve se podívejme na tisk pomocí smyčky. Pokud jste již byli na hodině programování, určitě jste se s tímto pojmem několikrát setkali. Provedením příkazu níže vytiskněte všechny klíče a hodnoty pole.

for key in "${!assArray1[@]}"; do echo $key; done

Výstup

Následující příkaz použije rozšíření parametru bash k vytištění všech klíčů a hodnot pole

echo "${!assArray1[@]}"

Výstup

Poznámka:Symbol ‚!‘ v obou příkazech se používá ke čtení klíčů asociativního pole.

Proto jsme viděli, že všechny hodnoty pole lze vytisknout buď pomocí expanze parametrů bash, nebo pomocí smyčky. Níže je uveden další příklad pro upřesnění použití těchto dvou metod. První příkaz vytiskne hodnoty pole pomocí smyčky, zatímco druhý příkaz vytiskne hodnoty pole pomocí rozšíření parametru bash.

for val in "${assArray1[@]}"; do echo $val; done

Výstup

echo "${assArray1[@]}"

Výstup

Poznámka:Metodu smyčky lze použít k tisku klíčů i hodnot asociativního pole. Pro ilustraci použijeme naše první pole, assArray1. V této metodě musí být každý klíč pole analyzován v každém kroku smyčky. Použitý klíč se pak použije jako index pole, který pomáhá při čtení hodnot odpovídajících klíčů.
Spusťte níže uvedený příkaz

for key in "${!assArray1[@]}"; do echo "$key => ${assArray1[$key]}"; done

Výstup

Jak přidat data do asociativního pole

Po deklaraci a inicializaci pole je možné přidat nové prvky pole do asociativního pole. Pomocí našeho druhého pole, assArray2, bude do pole přidána nová hodnota, „HP“ a klíč „Mouse“, a poté budou znovu zkontrolovány aktuální prvky pole. K dokončení výše uvedených kroků spusťte následující příkazy

echo "${assArray2[@]}"
assArray2+=([Mouse]=Logitech)
echo "${assArray2[@]}"

Výstup

Po provedení výše uvedených příkazů budete mít výstup podobný tomu níže.

Jak odstranit data z asociativního pole

Na základě hodnoty klíče lze odstranit hodnotu prvku v asociativním poli. Při mazání dat přijde vhod příkaz ‚unset‘. Příkaz odstraní určitá data v asociativním poli. Například z našeho assArray2 vymažte hodnotu, která obsahuje klíč „Monitor“. Příkaz zkontroluje, zda má hodnota klíč ‚Monitor.‘ Poté bude s pomocí příkazu unset hodnota vymazána. Příkaz ‚echo‘ se používá ke kontrole a zjištění, zda byla hodnota smazána nebo ne.

unset assArray2[Monitor]
echo ${assArray2[Monitor]}

Výstup

Pokud se příkaz spustí úspěšně, budete mít podobný výstup jako níže zvýrazněný

Jak najít chybějící index v asociativním poli

Podmíněný příkaz je v tomto případě životně důležitý, protože pomáhá zjistit, zda v poli chybí index. Můžeme například zkontrolovat klíč pole „Monitor“, který jsme nedávno odstranili. Za tímto účelem spustíme příkaz if, abychom zkontrolovali, zda klíč existuje nebo ne. Pamatujte, že jsme odstranili klíč z našeho předchozího příkladu. Proto by měla být vytištěna false hodnota.

if [ ${assArray2[Monitor]+_} ]; then echo "Found"; else echo "Not found"; fi

Výstup

Jak odebrat asociativní pole

Příkaz ‚unset‘ používaný k odstranění dat z asociativního pole se také používá k odstranění asociativního pole. V tomto příkladu použijeme naše první pole, kterým je assArray1. První příkaz vypíše hodnoty pole. Druhý příkaz obsahující příkaz „unset“ pole odstraní. Poslední příkaz zkontroluje, zda pole existuje nebo ne. Pokud bylo pole úspěšně odstraněno, na výstupní konzoli nebude nic.

echo "${assArray1[@]}"
unset assArray1
echo "${assArray1[@]}"

Výstup

Datová pole

Pro ukládání souvisejících dat jsou důležitá pole. Můžete být vyzváni k použití proměnných k ukládání dat, ale není to nejvhodnější způsob ukládání a sledování velkých datových stop. Proto, abyste udrželi svá data více indexovaná a konsolidovaná, budete muset použít pole. Kromě toho je použití polí k ukládání a udržování velkého množství dat efektivnější než použití proměnných. Pole nepotřebují položku, aby existovaly, jako je tomu v proměnných. Než začnete pracovat, neměli byste si dělat starosti s přesným množstvím dat, která mají být uložena. Díky tomu jsou pole výhodná při práci s rozsáhlými, nepředvídatelnými daty. Stručně řečeno, pole jsou mnohem účinnější než proměnné a běžně se používají ve většině programovacích jazyků a skriptovacích jazyků, jako je Bash.

Závěr

Použití asociativního pole pro ukládání dat je zásadní při ukládání masivních dat obsahujících páry klíč-hodnota v Bash. Článek popisuje, jak deklarovat a inicializovat asociativní pole, analyzovat klíče a hodnoty pole, přidávat a odstraňovat prvky pole, odstraňovat asociativní pole a datová pole. Proto doufáme, že všichni naši čtenáři budou nyní schopni implementovat všechna probraná témata, aby zlepšili své znalosti a porozumění asociativním polím. Zkuste to hned teď.


Linux
  1. Jednoduchá závorka v přiřazení proměnné Bash?

  2. Získat všechny soubory kromě souborů v poli – Bash?

  3. Bash pole s příklady

  1. Výukový program Ultimate Bash Array s 15 příklady

  2. Pole v Bash nenalezeno

  3. převést výstup bash `ls` na pole json

  1. Jak deklarovat 2D pole v bash

  2. Převeďte textový řetězec v bash na pole

  3. Vytvořte pole se všemi síťovými rozhraními v bash