Kaip ir dauguma programavimo kalbų, bash scenarijus kartais turi susidoroti su susijusių reikšmių sąrašu. Paprasčiausia forma yra standartinis masyvas.

Bash masyvo programavimas yra gana skirtingas, ypač kai kalbama apie sintaksę. „Bash“ masyvai taip pat yra griežtai vienmačiai, tačiau jie vis tiek gali būti naudojami.

Pagrindinė Bash masyvų sintaksė

Sukurti masyvą bash yra nesudėtinga. Galite inicijuoti visą masyvą naudodami skliaustus, pavyzdžiui:

miestas=(Londonas Paryžius Milanas "Niujorkas")

(Visą kodą iš šio miesto pavyzdžio galite rasti šis GitHub Gist.)

Taip sukuriamas masyvas, kuriame yra keturi elementai, indeksuojami nuo 0 iki 3. Atkreipkite dėmesį, kad ketvirtoji reikšmė yra kabutės eilutė, susidedanti iš dviejų žodžių. Turėsite cituoti reikšmes su tarpais, kad paaiškintumėte, jog tai nėra atskiros reikšmės.

Galite pasiekti vieną elementą naudodami skliaustų sintaksę, kuri yra įprasta programavimo kalbose:

miestas[2]

Kadangi tai yra bash, jums reikės kelių patobulinimų, kad iš tikrųjų galėtumėte naudoti reikšmę išraiškoje:

instagram viewer
  • Turėsite pridėti dolerio ženklą ($) į kintamojo pavadinimą.
  • Taip pat turėsite naudoti breketus ({}), kad kintamojo pavadinimas būtų nedviprasmiškas. Pagal numatytuosius nustatymus bash gydys $city[2] kaip kintamasis pavadintas miestas. Pridėkite skliaustus, kad nurodytumėte bash įvertinti skliaustus ir indekso numerį.

Standartinė bash masyvo prieigos sintaksė yra tokia:

${kintamojo_pavadinimas[indeksas]}

Štai išsamus pavyzdys:

#!/bin/bash

miestas=(Londonas Paryžius Milanas "Niujorkas")
echo ${city[3]}

# Niujorkas

Užuot inicijinę visą masyvą iš karto, galite jį priskirti žingsnis po žingsnio. Šis scenarijus yra ilgesnis ankstesnio pavyzdžio atitikmuo:

#!/bin/bash

city[0]=Londonas
miestas[1]=Paryžius
miestas[2]=Milanas
miestas[3]="Niujorkas"
echo ${city[3]}

# Niujorkas

Atminkite, kad bet kuriuo atveju turite būti atsargūs ir nepridėti tarpo aplink lygybės ženklą. „miestas[0] = Londonas“ su tarpais aplink lygybės ženklą sugeneruos klaidą.

Daugiau Bash masyvų naudojimo būdų

Masyvai puikiai tinka susijusiems duomenims saugoti. Štai (labai ribotas) apvalkalo scenarijus, norint gauti skaičiaus kvadratinę šaknį:

#!/bin/bash

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

echo ${sqrt[$1]}

Atminkite, kad scenarijus naudoja vertę $1 kaip masyvo indeksas. $1 reiškia pirmąjį komandinės eilutės argumentą, kurį gauna scenarijus, todėl galite paleisti šį scenarijų taip:

$ ./sqrt.sh 9
3

Galbūt žinote, $ (cmd) sintaksė komandai vykdyti ir jos išvestį išsaugoti kintamajame. Galite derinti tai su masyvo inicijavimo sintaksė, kad gautumėte failų masyvą, su kuriuo galėsite dirbti:

arr=( $(ls) )

Masyvas yra dažnai tobula duomenų struktūra kartojimui ir Bashas nėra išimtis. Galite pereiti per masyvą, kad atspausdintumėte kiekvieną elementą arba atliktumėte operaciją kiekvienam nariui.

Galite adresuoti masyvą a dėl.. in kilpa, norėdami pakartoti jo turinį. Pavyzdžiui, čia yra paprasta kilpa, kuri spausdina eilučių skaičių kiekviename masyvo faile arr:

failui „${arr[@]}“; daryti
wc -l "$failas"
padaryta

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

Atminkite, kad šis modelis naudoja @ simbolį, norėdami gauti visus elementus iš masyvo.

Daugiau Bash Array sintaksės

Elementų skaičių masyve galite gauti naudodami šiuos veiksmus:

echo ${#city[@]}

# 4

Galite pridėti naują elementą į standartinio masyvo pabaigą taip:

arr+=(4)

Taigi, norėdami į sąrašą įtraukti penktą miestą:

miestas+=(Roma)
echo ${city[@]}

# Londonas Paryžius Milanas Niujorkas Roma

Norėdami išgauti masyvo dalį, galite naudoti sintaksę, kuri apytiksliai atitinka daugelio kitų kalbų pjūvio operaciją:

${arr[@]:s: n}

Ši sintaksė grąžins masyvo dalį, prasidedančią nuo pozicijos s ir kurių sudėtyje yra n daiktų. Galite praleisti :n dalis, iš kurios galima išgauti visus elementus s iki sąrašo pabaigos.

echo ${city[@]:2:2}
# Milanas Niujorkas

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

„Bash“ turi daug funkcijų, tik reikia šiek tiek išmokti

Bash masyvai gali turėti apribojimų, tačiau jie siūlo tas pačias pagrindines funkcijas, kaip ir dauguma programavimo kalbų. Nors bash istoriškai palaikė tik paprastus vienmačius masyvus, laikai keičiasi. Naujausia bash versija 4 palaiko asociatyvinius masyvus ir neigiamų masyvų indeksavimą.

Kad ir kurią bash versiją naudotumėte, svarbu suprasti jos niuansus. Net ir įprasta kintamoji sintaksė turi daug savitumų.

Bash kintamųjų paaiškinimas: paprastas vadovas su pavyzdžiais

Skaitykite toliau

DalintisTviteryjeDalintisEl. paštas

Susijusios temos

  • Programavimas
  • Linux
  • Programavimas
  • Linux Bash Shell
  • Scenarijus

Apie autorių

Bobis Džekas (Paskelbtas 71 straipsnis)

Bobis yra technologijų entuziastas, beveik du dešimtmečius dirbęs programinės įrangos kūrėju. MUO jis yra programavimo skyriaus jaunesnysis redaktorius. Jis yra aistringas žaidimams, dirba žurnalo „Switch Player“ vyriausiuoju redaktoriumi ir yra pasinėręs į visus internetinės leidybos ir žiniatinklio kūrimo aspektus.

Daugiau iš Bobby Jack

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia