Znalost toho, jak pracovat s poli ve skriptech shellu, vám pomůže pracovat s většími datovými sadami mnohem efektivněji. Ale co jsou pole a jak můžete pole vytvořit? Pojďme to zjistit!
Co jsou pole?
Pokud již máte základní znalosti jakéhokoli programovacího jazyka, víte, co jsou pole. Ale pro nezasvěcené si pojďme projít základy polí a naučit se s nimi pracovat.
Proměnné ukládají jednotlivé datové prvky. Na druhou stranu pole mohou ukládat prakticky neomezený počet datových prvků. Při práci s velkým množstvím dat se proměnné mohou ukázat jako velmi neefektivní a je velmi užitečné se s poli prakticky seznámit.
Pojďme se naučit, jak vytvářet pole ve skriptech shellu.
Vytváření polí ve skriptech Shell
Ve skriptech shellu můžeme pracovat se dvěma typy polí.
- Indexovaná pole – Ukládat prvky s indexem začínajícím od 0
- Asociativní pole – Ukládat prvky do párů klíč–hodnota
Výchozí pole, které se vytvoří, je indexované pole. Pokud zadáte názvy indexů, stane se asociativním polem a k prvkům lze přistupovat pomocí jmen indexů namísto čísel.
Deklarování polí:
root@ubuntu:~# declare -A assoc_array root@ubuntu:~# assoc_array[key]=value OR root@ubuntu:~# declare -a indexed_array root@ubuntu:~# indexed_array[0]=value
Všimněte si velkého a malého písmene a . Velké A
se používá k deklaraci asociativního pole, zatímco a
jsou malá se používá k deklaraci indexovaného pole.
declare
klíčové slovo se používá k explicitní deklaraci polí, ale ve skutečnosti je nemusíte používat. Když vytváříte pole, můžete jednoduše inicializovat hodnoty na základě typu pole, které chcete, aniž byste pole explicitně deklarovali.
Práce s poli ve skriptech Shell
Nyní, když víte, jak vytvářet pole, pojďme se naučit pracovat s poli. Protože se jedná o kolekce datových prvků, můžeme pracovat se smyčkami a poli současně a extrahovat požadované datové body.
1. Individuální přístup k prvkům pole
Protože víme, že každý datový bod je indexován samostatně, můžeme přistupovat ke všem prvkům pole zadáním indexu pole, jak je uvedeno níže:
assoc_array[element1]="Hello World" echo ${assoc_array[element1]}
Podobně přistupme k některým prvkům indexovaného pole. Můžeme zadat všechny prvky pro pole indexu oddělením mezerami, protože index je pro každý z těchto prvků generován automaticky.
index_array=(1 2 3 4 5 6) echo ${index_array[0]}
Jak vidíte, první prvek se automaticky vytiskne na základě indexu 0.
2. Postupné čtení prvků pole
To bude snadný úkol, pokud již znáte smyčky. Pokud ne, probereme je v budoucím tutoriálu. K práci s prvky pole využijeme smyčky while nebo for ve skriptech shellu. Zkopírujte níže uvedený skript a uložte jej jako
#!/bin/bash index_array=(1 2 3 4 5 6 7 8 9 0) for i in ${index_array[@]} do echo $i done
Výše uvedený skript vypíše následující:
Nyní jste si možná všimli index_array[@] a pokud vás zajímá, co je @ symbol je pro, teď totéž projdeme.
Vestavěné operace pro pole ve skriptech Shell
Nyní, když jste se naučili přistupovat k prvkům jednotlivě a používat smyčky for, pojďme se naučit různé operace, které jsou standardně dostupné pro pole.
1. Přístup ke všem prvkům pole
Naučili jsme se, jak přistupovat k prvkům poskytnutím indexu nebo klíče pole. Pokud ale chceme tisknout všechny prvky současně nebo pracovat se všemi prvky, můžeme použít jiný operátor, kterým je [@]
symbol.
Jak jste si všimli v příkladu výše, použil jsem tento symbol, když jsem chtěl procházet všechny prvky pole pomocí smyčky for.
echo ${assoc_array[@]}
Výše uvedené vytiskne všechny prvky, které jsou uloženy v poli assoc.
2. Spočítejte počet prvků v poli
Podobné jako @
symbol výše, máme #
symbol, který může být uveden před názvem pole, aby nám poskytl počet prvků uložených v poli. Podívejme se, jak to funguje.
echo ${#index_array[@]}
Pokud chcete spočítat počet znaků použitých pro konkrétní prvek, můžeme jednoduše nahradit @
symbol s indexem.
3. Odstranit jednotlivé prvky pole
Víme, jak přidat prvky pole a také je vytisknout. Pojďme se naučit, jak odstranit konkrétní prvky. Pro tento účel použijeme unset
klíčové slovo.
unset index_array[1]
Nahraďte název pole a ID indexu ve výše uvedeném příkladu kódu a odebrali jste požadovaný prvek pole. Docela jednoduché, že?
Závěr
Skripty shellu jsou poměrně rozsáhlé a mohou nahradit jakoukoli funkci, kterou můžete na terminálu provádět správnou osobou, která skript píše. Některé další funkce polí ve skriptech shellu také zahrnují schopnost pracovat s regulárním výrazem (regulární výrazy). K manipulaci s prvky pole ve skriptech shellu můžeme použít různé regulární výrazy.
Prozatím doufáme, že dobře rozumíte vytváření polí a práci s nimi a že budete moci pole používat ve svém skriptování. Komentáře níže nám dejte vědět, co si myslíte, a pokud máte nějaké dotazy k tomuto tématu.