Bash Tutorial 6: Arrays
Obsah:
- Bash Arrays
- Vytváření basových polí
- Vytváření číselně indexovaných polí
- Vytváření asociativních polí
- Operace pole
- Referenční prvky
- Délka pole
- Smyčka přes pole
- Přidejte nový prvek
- Odstranit prvek
- Závěr
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}"
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}
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}"
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álWii je balíček-v příležitostné sportovní teaser byl zavázán zachytit video hraní softwarové pozice pole dříve nebo později, ale můžeme se počítat spravedlivě?

Hra na konzole Wii fanoušci doslova nemohou žít bez je nyní
První pohled: Rýchle vyhledávací pole Google

QSB využívá index vašeho Macu Spotlight místo vlastních vyhledávacích funkcí pro vyvolání souborů a programů vyhledávání se smíšenými výsledky.
Twitter: Rostoucí bezpečnostní minové pole

Protože Twitter se stává více hlavním proudem, mikroblogging se také stává větším cílem pro malware a podvody. Červen, svět sledoval, jak tweety z ulic Teheránu zaplavily Twitter. Časté uživatelé Twitteru a lidé, kteří ani neslyšeli o mikroblogování, byli náhle a současně svědky svého potenciálu.