Tāpat kā lielākajai daļai programmēšanas valodu, arī bash skriptiem dažkārt ir jātiek galā ar saistīto vērtību sarakstu. Vienkāršākā forma ir standarta masīvs.

Bash masīvu programmēšana ir diezgan atšķirīga, jo īpaši attiecībā uz sintaksi. Bash masīvi ir arī stingri viendimensionāli, taču tiem joprojām ir daudz pielietojumu.

Bash masīvu pamata sintakse

Masīva izveide programmā bash ir vienkārša. Varat inicializēt visu masīvu, izmantojot iekavas, piemēram:

pilsēta = (Londona Parīze Milāna "Ņujorka")

(Visu kodu no šī pilsētas piemēra varat atrast šeit šī GitHub Gist.)

Tādējādi tiek izveidots masīvs, kurā ir četri elementi, kas indeksēti no 0 līdz 3. Ņemiet vērā, ka ceturtā vērtība ir pēdiņās norādīta virkne, kas sastāv no diviem vārdiem. Jums būs jānorāda vērtības, kurās ir atstarpes, lai precizētu, ka tās nav atsevišķas vērtības.

Varat piekļūt vienam elementam, izmantojot iekavu sintaksi, kas ir izplatīta programmēšanas valodās:

pilsēta[2]

Tā kā tas ir bash, jums būs jāveic daži uzlabojumi, lai izteiksmē izmantotu vērtību:

  • Jums būs jāpievieno dolāra zīme ($) uz mainīgā nosaukumu.
  • Jums būs jāizmanto arī breketes ({}), lai mainīgā nosaukums būtu nepārprotams. Pēc noklusējuma bash apstrādās $city[2] kā mainīgais nosaukts pilsēta. Pievienojiet iekavas, lai norādītu bash novērtēt arī iekavas un indeksa numuru.

Standarta bash masīva piekļuves sintakse ir šāda:

${mainīgā_nosaukums[indekss]}

Šeit ir pilns piemērs:

#!/bin/bash

pilsēta = (Londona Parīze Milāna "Ņujorka")
echo ${city[3]}

# Ņujorka

Tā vietā, lai inicializētu visu masīvu uzreiz, varat to piešķirt soli pa solim. Šis skripts ir garāks līdzvērtīgs iepriekšējam piemēram:

#!/bin/bash

city[0]=Londona
pilsēta[1]=Parīze
pilsēta[2]=Milāna
pilsēta[3]="Ņujorka"
echo ${city[3]}

# Ņujorka

Ņemiet vērā, ka jebkurā gadījumā jums jābūt uzmanīgiem, lai ap vienādības zīmi netiktu pievienota atstarpe. “pilsēta[0] = Londona” ar atstarpēm ap vienādības zīmi radīs kļūdu.

Vairāk Bash masīvu lietojumu

Masīvi ir lieliski piemēroti saistīto datu glabāšanai. Šeit ir (ļoti ierobežots) čaulas skripts, lai iegūtu skaitļa kvadrātsakni:

#!/bin/bash

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

echo ${sqrt[$1]}

Ņemiet vērā, ka skripts izmanto vērtību $1 kā masīva indekss. $1 ir pirmais komandrindas arguments, ko saņem skripts, lai jūs varētu palaist šo skriptu šādi:

$ ./sqrt.sh 9
3

Jūs, iespējams, zināt par $(cmd) sintakse, lai izpildītu komandu un saglabātu tās izvadi mainīgajā. Varat to apvienot ar masīva inicializācijas sintaksi, lai iegūtu failu masīvu darbam ar:

arr=( $(ls) )

Masīvs ir bieži vien ir ideāla datu struktūra iterācijai un Bašs nav izņēmums. Varat pāriet cauri masīvam, lai izdrukātu katru elementu vai veiktu darbību katram dalībniekam.

Varat adresēt masīvu a priekš.. iekšā cilpa, lai atkārtotu tā saturu. Piemēram, šeit ir vienkārša cilpa, kas izdrukā rindu skaitu katrā masīva failā arr:

failam "${arr[@]}"; darīt
wc -l "$ fails"
darīts

# 3 envvars
# 547 httpd.conf
# ...

Ņemiet vērā, ka šis modelis izmanto @ simbolu, lai izgūtu visus elementus no masīva.

Vairāk Bash masīva sintakse

Varat iegūt vienumu skaitu masīvā, izmantojot tālāk norādītās darbības.

echo ${#city[@]}

# 4

Jūs varat pievienot jaunu elementu standarta masīva beigās, piemēram:

arr+=(4)

Tātad, lai sarakstam pievienotu piekto pilsētu:

pilsēta+=(Roma)
echo ${city[@]}

# Londona Parīze Milāna Ņujorka Roma

Lai izvilktu masīva daļu, varat izmantot sintaksi, kas aptuveni atbilst daudzu citu valodu slāņu darbībai.

${arr[@]:s: n}

Šī sintakse atgriezīs masīva daļu, kas sākas ar pozīciju s un satur n preces. Jūs varat izlaist :n daļa, no kuras izvilkt visus vienumus s līdz saraksta beigām.

echo ${city[@]:2:2}
# Milāna Ņujorka

echo ${city[@]:3}
# Ņujorka Roma

Bašam ir daudzas funkcijas, tās tikai nedaudz jāapgūst

Bash masīviem var būt ierobežojumi, taču tie piedāvā tādas pašas pamata funkcionalitātes kā lielākā daļa programmēšanas valodu. Lai gan bash vēsturiski ir atbalstījis tikai vienkāršus viendimensijas masīvus, laiki mainās. Jaunākā bash versija 4 atbalsta asociatīvos masīvus un negatīvo masīvu indeksēšanu.

Neatkarīgi no tā, kuru bash versiju izmantojat, ir svarīgi saprast tās nianses. Pat parastajai mainīgā sintaksei ir daudz īpašību.

Bash mainīgo skaidrojumi: vienkāršs ceļvedis ar piemēriem

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Programmēšana
  • Linux
  • Programmēšana
  • Linux Bash Shell
  • Skriptēšana

Par autoru

Bobijs Džeks (Publicēts 71 raksts)

Bobijs ir tehnoloģiju entuziasts, kurš gandrīz divus gadu desmitus strādāja par programmatūras izstrādātāju. MUO viņš ir programmēšanas sadaļas jaunākais redaktors. Viņš aizraujas ar spēlēm, strādā par žurnāla Switch Player galveno redaktoru un ir iegrimis visos tiešsaistes publicēšanas un tīmekļa izstrādes aspektos.

Vairāk no Bobija Džeka

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu