Ako používať indexové polia v Bash

Ako Pouzivat Indexove Polia V Bash



Bash poskytuje podporu pre indexované polia, čo sú v podstate zoznamy prvkov, ku ktorým je možné pristupovať pomocou ich indexového čísla. Indexované polia sú užitočné najmä vtedy, keď chcete ukladať a manipulovať s mnohými súvisiacimi hodnotami. Prečítajte si tento článok, kde sa dozviete, ako používať polia indexov.

Č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/bash
polož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/bash
polož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.