GNU/Linux >> Znalost Linux >  >> Linux

Pole ve skriptech Shell

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 .sh

#!/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.


Linux
  1. Správné zamykání skriptů Shell?

  2. Pole v Unix Bourne Shell?

  3. Spouštět skripty Shell přes web?

  1. Rozšíření souborů pro skripty Unix Shell?

  2. Sdílení proměnných ve více skriptech Shell?

  3. Jak otestovat shodu skriptů Shell s Posix?

  1. Rozdělení dlouhých příkazů ve skriptech Shell?

  2. Bash pole s příklady

  3. Parametry příkazového řádku ve skriptech shellu