GNU/Linux >> Znalost Linux >  >> Linux

Bash skriptování – indexované pole vysvětleno s příklady

Pole jsou typem datové struktury, která se používá k ukládání hodnot určitého typu. Pole můžete také považovat za proměnnou, ale proměnná může uložit pouze jednu hodnotu, kde pole může ukládat více hodnot. Koncept pole není vázán pouze na bash. Každý programovací jazyk, se kterým pracujete, bude mít pole, ale s rozdíly v implementaci.

Bash podporuje dva typy polí:

  • Indexované pole
  • Asociativní pole

Indexovaná pole jsou typem pole, kde jsou prvky (hodnoty) uloženy a přiřazeny celočíselným číslem začínajícím od 0 do N . Na prvky uvnitř pole se odkazuje pomocí čísla indexu. Více se o tom dozvíte v připravovaném článku. Hlavním cílem tohoto článku jsou pouze indexovaná pole.

Jak inicializovat indexované pole v Bash

Prvním krokem k práci s polem je jeho vytvoření. Termín vytvořit, definovat, inicializovat pole se bude používat zaměnitelně, ale ukazuje na stejný význam - vytvoření pole.

Chcete-li vytvořit pole, měli byste použít závorky a umístit prvky pole (hodnoty) do závorek.

$ arr1=( one 2 three 4 )

Důležité body k poznámce:

  • Pole Bash mohou ukládat prvky jiného datového typu. V některých programovacích jazycích můžete uložit hodnoty pouze do pole stejného typu.
  • Neexistují žádná omezení ohledně počtu prvků, které lze do pole uložit. Záleží na dostupnosti vaší systémové paměti.

Můžete také použít declare pomocí -a příznak k vytvoření indexovaného pole.

$ declare -a arr1
$ arr1=( one 2 three 4 )

Nebo,

$ declare -a arr1=( one 2 three 4 )

Jak přidat nebo zobrazit prvky pole

Můžete buď vytvořit pole s hodnotami, jak je uvedeno v předchozí části, nebo jednoduše vytvořit prázdné pole a přidat hodnoty později. Níže je uveden postup vytvoření prázdného pole.

$ locations=()

Každý prvek v poli má přiřazenou hodnotu indexu začínající od 0 do N . Musíte přidat nové prvky do pole pomocí pozice indexu.

$ locations[0]="Chennai"
$ locations[1]="Mumbai"

Zde je grafické znázornění přidávání prvků do pole.

Chcete-li zobrazit prvky v poli, můžete použít některou z následujících syntaxí.

$ echo ${locations[@]}
$ echo ${locations[*]}

Chcete-li vědět, jaký je rozdíl mezi @ a * a jak to funguje s polem, přečtěte si část „Opakování prvků pole“ v našem Bash For Loop průvodce.

Pokud se pokusíte vypsat prvky pole bez použití @ nebo * bude vytištěn pouze první prvek v poli.

$ echo ${locations}

Ke konkrétnímu prvku můžete přistupovat přímo pomocí jeho pozice v indexu.

$ echo ${locations[1]}

Hodnota indexu pole

V předchozí části jsem ukázal, jak přidat prvky do pole pomocí pozice indexu. Když přidáte pole pomocí pozic indexu, můžete přeskočit a přidat prvky do různých pozic indexu.

Umístění pole má dva prvky na pozicích 0 a 1 . Nyní mohu přeskočit index 2 a přidat k různým pozicím indexu.

$ locations[5]="Delhi"

Z obrázku výše můžete vidět, že jsem přidal nový prvek do pole na pozici indexu 5.

Pokud chcete vytisknout indexové hodnoty prvků, předponu pole je "!" symbol jako níže:

$ echo ${!locations[@]}

Tím se vytisknou pouze hodnoty indexu namísto tisku prvků.

Chcete-li vytisknout index i prvky, použijte následující úryvek.

for val in ${!locations[@]}
do
   echo "index = ${val} , value = ${locations[$val]}"
done

Přidat hodnoty k poli

Do pole můžete přidat nové prvky, aniž byste použili jejich indexové hodnoty, a to připojí prvky k poli.

locations=( Chennai Mumbai Delhi )
locations+=( Bangalore )
locations+=( Hyderabad )
$ echo ${locations[@]}
$ echo ${!locations[@]}

Najděte délku pole

Počet prvků v poli můžete zjistit přidáním předpony # symbol před polem.

$ echo ${#locations[@]}

Pomocí stejného # symbol, můžete také zjistit, zda je pole prázdné nebo ne.

if [[ ${#locations[@]} -ne 0 ]]; then
    echo "Array is Not empty"
else
    echo "Array is Empty"
fi

Odstranění prvků z pole

Chcete-li odstranit prvek z pole, můžete použít unset příkaz. Podívejte se na níže uvedený příklad použití unset příkaz prvku z index(2) je odstraněn.

$ echo ${locations[@]}
$ unset locations[2]
$ echo ${locations[@]}

Odstranění pole

Chcete-li pole odstranit, můžete použít stejný příkaz unset příkaz.

$ unset locations
$ echo ${locations[@]}

Vyprázdněte pole

Někdy můžete chtít odstranit všechny prvky z pole a ponechat pole prázdné. V takovém případě můžete pole jednoduše znovu vytvořit.

$ echo ${locations[@]}
Chennai Mumbai Delhi Hyderabad Bangalore
$ locations=()
$ echo ${locations[@]}

Uložit výstup příkazu jako pole

Můžete spustit libovolné příkazy a pokusit se uložit výstup do pole. Příkaz by měl být uzavřen v závorkách aby byl výstup uložen jako pole.

$ path_list=( $(echo $PATH | tr ":" "\n") )
$ echo ${path_list[@]}

Řezání pole

Řezání vám poskytuje flexibilitu při vytahování určitých prvků pole na základě jejich pozice indexu.

Následuje syntaxe pro krájení:

${locations[@]:index:length}

Pokud chcete uchopit všechny prvky, ale z konkrétní počáteční pozice indexu, můžete to udělat následujícím způsobem pomocí samotného indexu.

$ echo ${locations[@]:index} # syntax
$ echo ${locations[@]:2}

Ve výše uvedeném příkladu bude pole vytištěno od pozice indexu 2 až po poslední prvek. Pokud zadáte délku spolu s indexem, použije se k rozdělení pole následující vzorec.

From index to index+length-1 (inclusive) # Formula
$ echo ${locations[@]:1:3}

Pokud přeskočíte index a uvedete samotnou délku, bude se řezat pomocí následujícího vzorce.

From Index 0 to length-1 (inclusive)
$ echo ${locations[@]::4}

Závěr

V tomto článku jsem vás provedl indexovaným polem bash . Pole jsou velmi důležitá, když začínáte psát složité bash skripty. Dávají vám možnost snadno ukládat, načítat a manipulovat s daty různého typu. Na rozdíl od programovacích jazyků, jako je python, neexistují žádné vestavěné způsoby, jak snadno používat pole k provádění některých složitých úkolů, ale stále jsou dosažitelné.

V našem dalším průvodci budeme diskutovat o Asociativním poli podrobně.

  • Bash Scripting – Asociativní pole vysvětleno s příklady

Související čtení:

  • Bash Scripting – smyčka Zatímco a dokud není vysvětlena příklady
  • Bash Scripting – funkce vysvětlené na příkladech
  • Bash Scripting – proměnné vysvětlené na příkladech
  • Přesměrování Bash vysvětleno na příkladech
  • Příkaz Bash Echo vysvětlený s příklady v Linuxu
  • Výukový program Bash Heredoc pro začátečníky

Linux
  1. Bash pole s příklady

  2. Bash If-Else prohlášení s příklady

  3. Výukový program Ultimate Bash Array s 15 příklady

  1. Jak napsat Bash skript s příklady

  2. Jak vytvořit pole jedinečných prvků ze řetězce/pole v Bash?

  3. Pole AWK vysvětleno na 5 praktických příkladech

  1. Bash HereDoc výukový program s příklady

  2. Příkaz Bash Echo vysvětlený s příklady v Linuxu

  3. Bash přesměrování vysvětleno s příklady