Ako väčšina programovacích jazykov, aj bash skripty sa niekedy musia vysporiadať so zoznamom súvisiacich hodnôt. Najjednoduchšou formou je štandardné pole.

V bash je programovanie poľa úplne odlišné, najmä pokiaľ ide o syntax. Bash polia sú tiež striktne jednorozmerné, ale stále majú veľa využití.

Základná syntax polí Bash

Vytvorenie poľa v bash je jednoduché. Pomocou zátvoriek môžete inicializovať celé pole, napríklad:

city=(Londýn Paríž Miláno "New York")

(Všetok kód z tohto príkladu mesta nájdete v tento GitHub Gist.)

Tým sa vytvorí pole obsahujúce štyri prvky indexované od 0 do 3. Všimnite si, že štvrtá hodnota je reťazec v úvodzovkách pozostávajúci z dvoch slov. Hodnoty obsahujúce medzery budete musieť citovať, aby ste objasnili, že nejde o samostatné hodnoty.

K jedinému prvku môžete pristupovať pomocou syntaxe zátvoriek, ktorá je bežná pre programovacie jazyky:

mesto[2]

Keďže ide o bash, na skutočné použitie hodnoty vo výraze budete potrebovať niekoľko vylepšení:

  • Pred znak dolára budete musieť pridať ($) k názvu premennej.
  • instagram viewer
  • Budete tiež musieť použiť rovnátka ({}), aby bol názov premennej jednoznačný. V predvolenom nastavení bude bash liečiť $city[2] ako premenná s názvom mesto. Pridajte zátvorky, aby ste bashovi povedali, aby vyhodnotil aj zátvorky a indexové číslo.

Štandardná syntax prístupu k poli bash je potom:

${variable_name[index]}

Tu je úplný príklad:

#!/bin/bash

city=(Londýn Paríž Miláno "New York")
echo ${city[3]}

# New York

Namiesto inicializácie poľa naraz, môžete k nemu priradiť krok za krokom. Tento skript je dlhším ekvivalentom predchádzajúceho príkladu:

#!/bin/bash

mesto[0]=Londýn
mesto[1]=Paríž
mesto[2]=Milán
mesto[3]="New York"
echo ${city[3]}

# New York

Všimnite si, že v oboch prípadoch musíte byť opatrní, aby ste okolo znamienka rovnosti nepridali žiadnu medzeru. „mesto[0] = Londýn“ s medzerami okolo znamienka rovnosti vygeneruje chybu.

Ďalšie možnosti využitia polí Bash

Polia sú ideálne na ukladanie súvisiacich údajov. Tu je (veľmi obmedzený) skript shellu na získanie druhej odmocniny čísla:

#!/bin/bash

sqrt[1]=1
sqrt[4]=2
sqrt[9]=3
sqrt[16]=4
sqrt[25]=5

echo ${sqrt[$1]}

Všimnite si, že skript používa hodnotu $1 ako index poľa. $1 predstavuje prvý argument príkazového riadka, ktorý skript dostane, takže tento skript môžete spustiť takto:

$ ./sqrt.sh 9
3

Možno ste si vedomí $ (cmd) syntax na vykonanie príkazu a uloženie jeho výstupu do premennej. Môžete to skombinovať so syntaxou inicializácie poľa, aby ste získali pole súborov, s ktorými môžete pracovať:

arr=( $(ls) )

Pole je často dokonalá dátová štruktúra na iteráciu a Bash nie je výnimkou. Môžete prechádzať cez pole, aby ste vytlačili každý prvok alebo vykonali operáciu s každým členom.

Môžete adresovať pole v a pre.. v slučka, opakovať jeho obsah. Tu je napríklad jednoduchá slučka, ktorá vytlačí počet riadkov v každom súbore v poli arr:

pre súbor v "${arr[@]}"; robiť
wc -l "$file"
hotový

# 3 envvary
# 547 httpd.conf
# ...

Všimnite si, že tento vzor využíva @ symbol na získanie všetkých prvkov z poľa.

Viac syntaxe poľa Bash

Počet položiek v poli môžete získať nasledujúcim spôsobom:

echo ${#city[@]}

# 4

Na koniec štandardného poľa môžete pridať nový prvok takto:

arr+=(4)

Ak chcete do zoznamu pridať piate mesto:

mesto+=(Rím)
echo ${city[@]}

# Londýn Paríž Miláno New York Rím

Ak chcete extrahovať časť poľa, môžete použiť syntax, ktorá aproximuje operáciu rezu v mnohých iných jazykoch:

${arr[@]:s: n}

Táto syntax vráti časť poľa začínajúcu na pozícii s a obsahujúce n položky. Môžete vynechať :n časť na extrahovanie všetkých položiek s až do konca zoznamu.

echo ${city[@]:2:2}
# Miláno v New Yorku

echo ${city[@]:3}
# New York Rím

Bash má veľa funkcií, stačí sa len trochu naučiť

Polia v bash môžu mať obmedzenia, ale ponúkajú rovnakú základnú funkčnosť ako väčšina programovacích jazykov. Hoci bash historicky podporoval iba jednoduché jednorozmerné polia, časy sa menia. Najnovšia verzia bash, 4, podporuje asociatívne polia a negatívne indexovanie polí.

Bez ohľadu na to, akú verziu bashu používate, je dôležité pochopiť jej nuansy. Dokonca aj normálna syntax premenných má množstvo idiosynkrázií.

Bash premenné vysvetlené: jednoduchý sprievodca s príkladmi

Prečítajte si ďalej

zdieľamTweetujtezdieľamEmail

Súvisiace témy

  • Programovanie
  • Linux
  • Programovanie
  • Linux Bash Shell
  • Skriptovanie

O autorovi

Bobby Jack (71 publikovaných článkov)

Bobby je technologický nadšenec, ktorý väčšinu dvoch desaťročí pracoval ako vývojár softvéru. V MUO je junior editorom sekcie Programovanie. Je nadšený pre hry, pracuje ako šéfredaktor v časopise Switch Player Magazine a je ponorený do všetkých aspektov online publikovania a vývoja webu.

Viac od Bobbyho Jacka

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber