Android

Bash pole

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Obsah:

Anonim

Pole jsou jednou z nejpoužívanějších a základních datových struktur. Můžete si představit, že pole je proměnná, která v něm může ukládat více proměnných., pokryjeme Bash pole a vysvětlíme, jak je používat ve vašich Bash skriptech.

Bash Arrays

Bash podporuje jednorozměrné numericky indexované a asociativní typy polí. Numerická pole jsou odkazována pomocí celých čísel a asociativní jsou odkazována pomocí řetězců.

Numericky indexovaná pole lze získat od konce pomocí záporných indexů, index -1 odkazuje na poslední prvek. Indexy nemusí být sousedící.

Na rozdíl od většiny programovacích jazyků nemusí elementy pole Bash být stejného typu dat. Můžete vytvořit pole, které obsahuje řetězce i čísla.

Bash nepodporuje vícerozměrná pole a nemůžete mít prvky pole, které jsou také poli.

Maximální počet prvků, které lze uložit do pole, není nijak omezen.

Vytváření basových polí

Pole v Bash lze inicializovat různými způsoby.

Vytváření číselně indexovaných polí

Proměnné typu Bash jsou netypované, libovolnou proměnnou lze použít jako indexované pole, aniž by to deklarovalo.

Chcete-li explicitně deklarovat pole, použijte vestavěný deklarovat:

declare -a array_name

Jedním ze způsobů, jak vytvořit indexované pole, je pomocí následujícího formuláře:

array_name=value_1 array_name=value_2 array_name=value_n

Kde index_* je kladné celé číslo.

Dalším způsobem, jak vytvořit číselné pole, je určit seznam prvků v závorkách oddělených mezerou:

array_name=(element_1 element_2 element_N)

Když je pole vytvořeno pomocí výše uvedeného formuláře, indexování začíná na nule, tj. První prvek má index 0 .

Vytváření asociativních polí

Na rozdíl od číselně indexovaných musí být asociativní pole deklarována dříve, než mohou být použita.

Pro deklaraci asociativního pole použijte vestavěnou declare s možností -A (velká písmena):

declare -A array_name

Asociativní pole lze vytvořit pomocí následujícího formuláře:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Kde index_* může být libovolný řetězec.

Asociativní pole můžete také vytvořit pomocí následujícího formuláře:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Operace pole

Syntaxe Bash Array se může zpočátku zdát trochu podivná, ale po přečtení tohoto článku bude mít větší smysl.

Referenční prvky

Chcete-li odkazovat na jeden prvek, musíte znát index prvku.

Na jakýkoli prvek lze odkazovat pomocí následující syntaxe:

${array_name} Syntaxe pro přístup k prvku pole je podobná syntaxi většiny programovacích jazyků. Kroutící složené závorky ${} jsou vyžadovány, aby se zabránilo operátorům rozšíření názvu souboru prostředí.

Pojďme vytisknout prvek s indexem 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Jediný rozdíl mezi @ a * je, když je formulář ${my_array} obklopen dvojitými uvozovkami. V tomto případě se * rozšíří na jedno slovo, kde jsou prvky pole odděleny mezerou. @ rozšiřuje každý prvek pole do samostatného slova. To je zvláště důležité při použití formuláře k negramotnosti prostřednictvím prvků pole.

Chcete-li vytisknout klíče pole, přidejte ! operátor před názvem pole:

${!array_name}

Zde je příklad:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Délka pole

Chcete-li získat délku pole, použijte následující formulář:

${#array_name} Syntaxe je stejná jako při odkazování na všechny prvky s přidáním znaku # před název pole.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Smyčka přes pole

Nejběžnějším způsobem iterace každé položky v poli je použití smyčky for:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

Výše uvedený kód bude iterovat přes pole a tisknout každý prvek do nového řádku:

Hydrogen Helium Lithium Beryllium

Zde je příklad, jak vytisknout všechny klíče a hodnoty:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Dalším způsobem, jak procházet maticí, je získat délku pole a použít smyčku ve C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Přidejte nový prvek

Chcete-li přidat nový prvek do bash pole a určit jeho index, použijte následující formulář:

my_array="New Element"

Zde je příklad:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Dalším způsobem přidání nového prvku do pole bez určení indexu je použití operátoru += . Můžete přidat jeden nebo více prvků:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Odstranit prvek

Chcete-li odstranit jeden prvek, musíte znát index prvku. Prvek lze odstranit příkazem unset :

unset my_array

Podívejme se na příklad:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Závěr

Vysvětlili jsme, jak vytvořit numericky indexovaná a asociativní pole. Také jsme ukázali, jak iterovat skrz pole, vypočítat délku pole a přidávat a odebírat prvky.

bash terminál