Zoznámte sa s poľami Bash – ako ich deklarovať, manipulovať s nimi a vymazať ich.

Polia sú dátové úložiská používané na uchovávanie hodnôt, ktoré majú nejaký vzájomný vzťah. Na rozdiel od väčšiny programovacích jazykov môžu polia Bash ukladať hodnoty rôznych typov údajov v rovnakom poli.

Bash má dva typy polí: indexované polia a asociatívne polia. Pre indexované polia začínajú indexy od 0 do (n-1), ako je to bežné vo väčšine jazykov. Polia v Bash sú však zriedkavé. To znamená, že môžete priradiť (n-1)-tý prvok poľa bez toho, aby ste priradili (n-2)-tý prvok.

V tomto návode sa naučíte pracovať s poliami v Bash. Začnime.

Definovanie polí

Existujú tri spôsoby, ako môžete definovať polia v Bash. Podobne ako premenné Bash, polia je potrebné inicializovať pri vytváraní. Jedinou výnimkou je, ak používate vyhlásiť kľúčové slovo. Pri inicializácii poľa sa tiež musíte uistiť, že na oboch stranách operátora priradenia nezostane žiadne miesto.

Prvou metódou je zložené priradenie hodnôt k názvu poľa. Existujú dva spôsoby, ako to urobiť:

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

V prvom zloženom priradení sa hodnoty v okrúhlych zátvorkách priraďujú postupne od indexu [0] do [3].

V druhom sú však hodnoty priradené k indexu v poradí, ktoré programátor označil.

Súvisiace: Čo sú premenné prostredia v systéme Linux? Všetko, čo potrebujete vedieť

Ak ste si to pozorne všimli arr2, všimnete si ten index [2] bol vynechaný. Pole bude stále vytvorené bez akýchkoľvek chýb. Toto zadanie je vlastne ukážkou riedkeho ukladania v poliach Bash, ako sme sa už dotkli.

Všimnite si, že hodnoty poľa neoddeľujú žiadne čiarky. Hodnoty sú jednoducho oddelené medzerami.

Druhá metóda nepriamo deklaruje pole. Môžete len začať priraďovať hodnoty prvkom null poľa:

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

Tretím spôsobom je explicitne deklarovať pole pomocou kľúčového slova vyhlásiť:

declare -a arrayName

Operácie na poliach

Ak chcete získať prístup k prvkom poľa, použite túto syntax: ${array[index]}

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

Ak namiesto toho potrebujete vytlačiť celé pole, použite @ symbol ako

index z ${array[index]}:

echo${fruits[@]}

Ak chcete zistiť počet prvkov v poli, použite # symbol, ako je znázornené nižšie:

echo ${#fruits[1]}

Možno budete musieť upraviť aj prvky poľa – pozrite si príklad nižšie, ako to urobiť. Je to podobné, ako keď pridáte nový prvok. Jediný rozdiel je v tom, že nahrádzate hodnotu indexom, ktorý už hodnotu má.

fruits[1]=pears

Asociatívne polia

Pole, ktoré má ako kľúče ľubovoľné hodnoty, sa nazýva asociatívne pole. Tieto polia sa používajú na ukladanie súvisiacich párov kľúč – hodnota.

Súvisiace: Ako zmeniť Bash skripty na klikateľné aplikácie pomocou AppleScript

Ak chcete definovať asociatívne pole, musíte to urobiť explicitne pomocou kľúčového slova vyhlásiť.

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

K členskému prvku môžete pristupovať rovnakým spôsobom ako indexované polia:

echo${animal[lion]}

Ak chcete vytlačiť všetky hodnoty, môžete použiť @ symbol, ako je znázornené nižšie:

echo${animal[@]}

Ak chcete vytlačiť všetky kľúče poľa, môžete použiť @ a ! symboly, ako je uvedené nižšie:

echo${!animal[@]}

Ak chcete zistiť počet prvkov, ktoré má asociatívne pole, použite rovnakú syntax, akú by ste použili pri indexovaných poliach (uvedené v poslednej časti).

Ak chcete odstrániť položku poľa alebo celé pole, použite nižšie uvedenú syntax:

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

Pomocou príkazu printf

Možno ste si všimli, že celý tento článok používa tzv ozvena príkaz na výstup údajov do shellu. The ozvena príkaz funguje pre tento tutoriál, ale má málo funkcií a flexibilitu, pokiaľ ide o formátovanie reťazcov.

Avšak, printf ponúka špecifickejšie možnosti formátovania, vďaka ktorým je skriptovanie v Bash hračkou. Učenie sa printf funkcia určite zlepší vaše skúsenosti s formátovaním reťazcov a efektivitu v Bash.