Čo sú indexové polia
Indexované polia sú kolekciou prvkov v bash, ku ktorým je možné pristupovať pomocou indexu alebo kľúča. Tieto polia možno použiť na ukladanie a získavanie údajov v určitom poradí, čo uľahčuje správu veľkého množstva údajov. Syntax na deklarovanie indexovaného poľa v bash je nasledovná:
< názov_poľa > = ( prvok1 prvok2 prvok3 ... )Tu je názov poľa názov poľa a element1, element2, element3 atď. sú hodnoty, ktoré sa majú uložiť do poľa. Hodnoty sú oddelené medzerami a všimnite si, že na vytvorenie poľa môžete použiť aj príkaz deklarovať.
Ako používať indexované polia v Bash
Ak chcete vytvoriť pole indexov v bash, musíte jednoducho deklarovať premennú a priradiť jej hodnoty uzavreté v zátvorkách a oddelené medzerami. Tu je niekoľko príkladov, ktoré ukazujú, ako používať indexované polia v bash:
Zmena poradia zoznamu v Bash
Ak máte zoznam položiek v určitom poradí a chcete si ich objednať iným spôsobom. Na vytvorenie nového poradia položiek môžete použiť indexové pole takto:
#!/bin/bash
položky = ( 'Mango' 'ananás' 'jahoda' 'Čerešňa' 'hrozno' )
objednať = ( 4 2 0 3 1 )
pre i v ' ${objednávka[@]} '
robiť
ozvena ${items[$i]}
hotový
V tomto príklade vytvoríme pole s názvom položky s piatimi prvkami. Vytvoríme tiež indexové pole s názvom order, ktoré špecifikuje nové poradie pre položky. Potom prejdeme cez pole objednávok a použijeme každú hodnotu ako index na získanie zodpovedajúcej položky z poľa položiek a jej vytlačenie.
Filtrovanie zoznamu v Bash
Ak máte zoznam položiek a chcete odfiltrovať určité položky na základe podmienky. Indexové pole môžete použiť na sledovanie indexov položiek, ktoré spĺňajú podmienku, a to takto:
#!/bin/bash
položky = ( 'Mango' 'ananás' 'jahoda' 'Čerešňa' 'hrozno' )
indexy = ( )
pre i v ' ${!items[@]} '
robiť
ak [ [ ${items[$i]} == * 'r' * ] ]
potom
indexy + = ( $i )
byť
hotový
pre i v ' ${indices[@]} '
robiť
ozvena ${items[$i]}
hotový
V tomto príklade vytvoríme pole s názvom položky s piatimi prvkami. Vytvárame tiež prázdne pole indexov nazývané indexy. Potom prejdeme cez pole položiek a skontrolujeme, či každá položka obsahuje písmeno „r“. Ak áno, pridáme jeho index do poľa indexov. Nakoniec prejdeme cez pole indexov a použijeme každú hodnotu ako index na získanie zodpovedajúcej položky z poľa položiek a jej vytlačenie.
Počítanie udalostí v Bash
Ak máte zoznam položiek a chcete spočítať počet výskytov každej položky, môžete použiť indexové pole na sledovanie počtov a tu je príklad na demonštráciu:
#!/bin/bashpoložky = ( 'Mango' 'ananás' 'jahoda' 'Čerešňa' 'hrozno' )
počíta = ( )
pre i v ' ${!items[@]} '
robiť
ak [ [ ! ' ${counts[@]} ' =~ ' ${items[$i]} ' ] ]
potom
počíta += ( ' ${items[$i]} 1' )
inak
index = $ ( ozvena ' ${counts[@]} ' | tr ' ' '\n' | priľnavosť -n '^ ${items[$i]} ' | s )
počítať = $ ( ozvena ' ${counts[$index-1]} ' | rezať -d ' ' -f2 )
počíta [ $index - 1 ] = ' ${items[$i]} $((počet+1) )'
byť
hotový
pre počítať v ' ${counts[@]} '
robiť
ozvena $počet
hotový
Najprv inicializuje pole s názvom „položky“ so zoznamom reťazcov. Potom deklaruje prázdne pole s názvom „counts“. Vytvorí sa cyklus for na iteráciu pre každú položku v poli „items“ a pre každú položku skontroluje, či už existuje v poli „counts“.
Ak neexistuje, pridá položku a počet 1 do poľa „counts“. Ak existuje, zvýši počet tejto položky v poli „counts“. Nakoniec sa na vytlačenie každej položky a jej zodpovedajúceho počtu použije ďalší cyklus for. Na výstupe tohto kódu sa vytlačí počet každej položky v poli „položky“, pričom duplikáty sa počítajú oddelene.
Aktualizácia zoznamu v Bash
Ak máte zoznam položiek a chcete z neho pridať alebo odstrániť položky, môžete na to použiť indexové pole a tu je príklad na ukážku:
#!/bin/bashpoložky = ( 'Mango' 'ananás' 'jahoda' 'Čerešňa' 'hrozno' )
# Pridanie nového prvku do indexovaného poľa na indexe 2
položky [ 6 ] = 'oranžový'
# Odstránenie prvku na indexe 2 z indexovaného poľa
odstaviť položky [ 2 ]
# Tlač aktualizovaného poľa
ozvena ' ${items[@]} '
V skripte je definované indexované pole „items“ s piatimi počiatočnými prvkami. Ak chcete pridať nový prvok, hodnota sa jednoducho priradí k požadovanému indexu pomocou syntaxe pole[index]=hodnota. V tomto skripte sa do indexu 6 poľa pridá „oranžová“. Na odstránenie prvku použijeme príkaz unset, za ktorým nasleduje index prvku, ktorý chceme odstrániť. V tomto prípade sa prvok na indexe 2 („Jahoda“) vymaže. Aktualizované pole sa potom vytlačí pomocou syntaxe „${array[@]}“, ktorá rozšíri celé pole.
Záver
Indexované polia sú praktickou štruktúrou bash, ktorá vám umožňuje ukladať a manipulovať s viacerými hodnotami pomocou jednej premennej. Pochopením syntaxe a použitia indexovaných polí môžete písať efektívnejšie a efektívnejšie bash skripty.