Jak používat indexová pole v Bash

Jak Pouzivat Indexova Pole V Bash



Bash poskytuje podporu pro indexovaná pole, což jsou v podstatě seznamy prvků, ke kterým lze přistupovat pomocí jejich indexového čísla. Indexovaná pole jsou zvláště užitečná, když chcete ukládat a manipulovat s mnoha souvisejícími hodnotami, dále si přečtěte tento článek, kde se dozvíte, jak používat indexová pole.

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