Co jsou indexová pole
Indexovaná pole jsou kolekce prvků v bash, ke kterým lze přistupovat pomocí indexu nebo klíče. Tato pole lze použít k ukládání a načítání dat v určitém pořadí, což usnadňuje správu velkého množství dat. Syntaxe pro deklaraci indexovaného pole v bash je následující:
< název_pole > = ( prvek1 prvek2 prvek3... )Název_pole je zde název pole a prvek1, prvek2, prvek3 atd. jsou hodnoty, které mají být v poli uloženy. Hodnoty jsou odděleny mezerami a všimněte si, že k vytvoření pole můžete také použít příkaz deklarovat.
Jak používat indexovaná pole v Bash
Chcete-li vytvořit pole indexů v bash, stačí deklarovat proměnnou a přiřadit jí hodnoty uzavřené v závorkách a oddělené mezerami. Zde je několik příkladů, které demonstrují, jak používat indexovaná pole v bash:
Změna pořadí seznamu v Bash
Pokud máte seznam položek v určitém pořadí a chcete je doobjednat jiným způsobem. Pomocí indexového pole můžete vytvořit novou objednávku položek takto:
#!/bin/bash
položky = ( 'Mango' 'Ananas' 'Jahoda' 'Třešeň' 'Hrozny' )
objednat = ( 4 2 0 3 1 )
pro i v ' ${objednávka[@]} '
dělat
echo ${items[$i]}
Hotovo
V tomto příkladu vytvoříme pole nazvané položky s pěti prvky. Vytvoříme také indexové pole nazvané order, které určuje nové pořadí pro položky. Poté projdeme polem objednávky a použijeme každou hodnotu jako index k získání odpovídající položky z pole položek a jejímu vytištění.
Filtrování seznamu v Bash
Pokud máte seznam položek a chcete odfiltrovat určité položky na základě podmínky. Pomocí indexového pole můžete sledovat indexy položek, které splňují podmínku, a to následovně:
#!/bin/bash
položky = ( 'Mango' 'Ananas' 'Jahoda' 'Třešeň' 'Hrozny' )
indexy = ( )
pro i v ' ${!items[@]} '
dělat
-li [ [ ${items[$i]} == * 'r' * ] ]
pak
indexy += ( $i )
být
Hotovo
pro i v ' ${indices[@]} '
dělat
echo ${items[$i]}
Hotovo
V tomto příkladu vytvoříme pole nazvané položky s pěti prvky. Vytvoříme také prázdné pole indexů nazývané indexy. Poté procházíme pole položek a kontrolujeme, zda každá položka obsahuje písmeno „r“. Pokud ano, přidáme jeho index do pole indexů. Nakonec projdeme polem indexů a použijeme každou hodnotu jako index, abychom získali odpovídající položku z pole položek a vytiskli ji.
Počítání událostí v Bash
Pokud máte seznam položek a chcete spočítat počet výskytů každé položky, můžete ke sledování počtu použít indexové pole a zde je příklad pro demonstraci:
#!/bin/bashpoložky = ( 'Mango' 'Ananas' 'Jahoda' 'Třešeň' 'Hrozny' )
se počítá = ( )
pro i v ' ${!items[@]} '
dělat
-li [ [ ! ' ${counts[@]} ' =~ ' ${items[$i]} ' ] ]
pak
počítá += ( ' ${items[$i]} 1' )
jiný
index = $ ( echo ' ${counts[@]} ' | tr ' ' '\n' | rukojeť -n '^ ${items[$i]} ' | s )
počet = $ ( echo ' ${counts[$index-1]} ' | střih -d ' ' -f2 )
se počítá [ $index - 1 ] = ' ${items[$i]} $((počet+1) )'
být
Hotovo
pro počet v ' ${counts[@]} '
dělat
echo $počet
Hotovo
Nejprve inicializuje pole nazvané „items“ se seznamem řetězců. Poté deklaruje prázdné pole s názvem „counts“. Vytvoří se cyklus for, který iteruje pro každou položku v poli „items“ a pro každou položku zkontroluje, zda již existuje v poli „counts“.
Pokud neexistuje, přidá položku a počet 1 do pole „counts“. Pokud existuje, zvýší počet této položky v poli „counts“. Nakonec se k vytištění každé položky a jejího odpovídajícího počtu použije další smyčka for. Výstup tohoto kódu vytiskne počet každé položky v poli „položky“, přičemž duplikáty se počítají samostatně.
Aktualizace seznamu v Bash
Pokud máte seznam položek a chcete z něj přidat nebo odstranit položky, můžete pro něj použít indexové pole a zde je příklad pro demonstraci:
#!/bin/bashpoložky = ( 'Mango' 'Ananas' 'Jahoda' 'Třešeň' 'Hrozny' )
# Přidání nového prvku do indexovaného pole na indexu 2
položky [ 6 ] = 'oranžový'
# Odstranění prvku na indexu 2 z indexovaného pole
odstaveno položky [ 2 ]
# Tisk aktualizovaného pole
echo ' ${items[@]} '
Ve skriptu je definováno indexované pole „item“ s pěti počátečními prvky. Chcete-li přidat nový prvek, hodnota se jednoduše přiřadí požadovanému indexu pomocí syntaxe pole[index]=hodnota. V tomto skriptu se k indexu 6 pole přidá „oranžová“. K odstranění prvku použijeme příkaz unset následovaný indexem prvku, který chceme odstranit. V tomto případě je prvek na indexu 2 („Jahoda“) odstraněn. Aktualizované pole se poté vytiskne pomocí syntaxe „${array[@]}“, která rozšíří celé pole.
Závěr
Indexovaná pole jsou praktickou strukturou bash, která vám umožňuje ukládat a manipulovat s více hodnotami pomocí jediné proměnné. Pochopením syntaxe a použití indexovaných polí můžete psát efektivnější a efektivnější bash skripty.