Seznamte se s poli Bash – jak je deklarovat, manipulovat s nimi a mazat je.

Pole jsou datová úložiště používaná k uchovávání hodnot, které mají nějaký vzájemný vztah. Na rozdíl od většiny programovacích jazyků mohou pole Bash ukládat hodnoty různých datových typů do stejného pole.

Bash má dva typy polí: indexovaná pole a asociativní pole. U indexovaných polí začínají indexy od 0 do (n-1), jak je běžné ve většině jazyků. Pole v Bash jsou však řídké. To znamená, že můžete přiřadit (n-1)-tý prvek pole, aniž byste přiřadili (n-2)-tý prvek.

V tomto tutoriálu se naučíte pracovat s poli v Bash. Začněme.

Definování polí

Existují tři způsoby, jak můžete definovat pole v Bash. Podobně jako u proměnných Bash je třeba pole inicializovat při vytváření. Jedinou výjimkou je, pokud používáte prohlásit klíčové slovo. Při inicializaci pole se také musíte ujistit, že na obou stranách operátoru přiřazení nezůstane žádné místo.

První metodou je složené přiřazení hodnot k názvu pole. To lze provést dvěma způsoby:

instagram viewer
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

V prvním složeném přiřazení jsou hodnoty v kulatých závorkách přiřazeny postupně z indexu [0] na [3].

Ve druhém jsou však hodnoty přiřazeny k indexu v libovolném pořadí, které programátor uvedl.

Příbuzný: Co jsou proměnné prostředí v Linuxu? Vše, co potřebujete vědět

Pokud jste si toho dali pozor arr2, všimnete si toho indexu [2] byl vynechán. Pole bude stále vytvořeno bez jakýchkoli chyb. Toto zadání je ve skutečnosti ukázkou řídkého úložiště v polích Bash, jak jsme se dotkli dříve.

Všimněte si, že hodnoty pole neoddělují žádné čárky. Hodnoty jsou jednoduše odděleny mezerami.

Druhá metoda nepřímo deklaruje pole. Stačí začít přiřazovat hodnoty prvkům null pole:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

Třetím způsobem je explicitně deklarovat pole pomocí klíčového slova prohlásit:

declare -a arrayName

Operace na polích

Pro přístup k prvkům pole použijte tuto syntaxi: ${array[index]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Pokud místo toho potřebujete vytisknout celé pole, použijte @ symbol jako

index z ${array[index]}:

echo${fruits[@]}

Chcete-li zjistit počet prvků v poli, použijte # symbol, jak je znázorněno níže:

echo ${#fruits[1]}

Možná budete muset upravit prvky pole – viz příklad níže, jak to udělat. Je to podobné, jako když přidáte nový prvek. Jediný rozdíl je v tom, že nahrazujete hodnotu indexem, který již hodnotu má.

fruits[1]=pears

Asociativní pole

Pole, které má jako klíče libovolné hodnoty, se nazývá asociativní pole. Tato pole se používají k ukládání souvisejících párů klíč–hodnota.

Příbuzný: Jak proměnit Bash skripty na klikací aplikace pomocí AppleScriptu

Chcete-li definovat asociativní pole, musíte tak učinit explicitně pomocí klíčového slova prohlásit.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

K členskému prvku můžete přistupovat stejným způsobem jako k indexovaným polím:

echo${animal[lion]}

Pokud si přejete vytisknout všechny hodnoty, můžete použít @ symbol, jak je znázorněno níže:

echo${animal[@]}

Pokud chcete vytisknout všechny klíče pole, můžete použít @ a ! symboly, jak je ukázáno níže:

echo${!animal[@]}

Chcete-li zjistit počet prvků, které má asociativní pole, použijte stejnou syntaxi, jakou byste použili u indexovaných polí (demonstrováno v poslední části).

Pokud chcete odstranit položku pole nebo celé pole, použijte syntaxi níže:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

Pomocí příkazu printf

Možná jste si všimli, že celý tento článek používá echo příkaz pro výstup dat do shellu. The echo příkaz funguje pro tento tutoriál, ale má málo funkcí a flexibilitu, pokud jde o formátování řetězců.

Nicméně, printf nabízí specifičtější možnosti formátování, díky kterým je skriptování v Bash hračkou. Učení se printf funkce jistě zlepší vaše zkušenosti s formátováním řetězců a efektivitu v Bash.