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:
- 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
Susijusios temos
- Programavimas
- Linux
- Programavimas
- Linux Bash Shell
- Scenarijus
Apie autorių

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.
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