Kuten useimmat ohjelmointikielet, bash-komentosarjat joutuvat joskus käsittelemään vastaavien arvojen luetteloa. Yksinkertaisin muoto on vakiotaulukko.
Bashissa taulukko-ohjelmointi on aivan erilaista, erityisesti mitä tulee syntaksiin. Bash-taulukot ovat myös tiukasti yksiulotteisia, mutta niillä on silti paljon käyttöä.
Bash-taulukoiden perussyntaksi
Taulukon luominen bashissa on yksinkertaista. Voit alustaa koko taulukon hakasulkeilla, esimerkiksi:
kaupunki=(Lontoo Pariisi Milano "New York")
(Löydät kaikki koodit tästä kaupunkiesimerkistä osoitteesta tämä GitHub Gist.)
Tämä luo taulukon, joka sisältää neljä elementtiä, indeksoituna 0–3. Huomaa, että neljäs arvo on lainausmerkkijono, joka koostuu kahdesta sanasta. Sinun tulee lainata arvoja, jotka sisältävät välilyöntejä, selventääksesi, että ne eivät ole erillisiä arvoja.
Voit käyttää yhtä elementtiä käyttämällä hakasulkeiden syntaksia, joka on yleinen ohjelmointikielillä:
kaupunki[2]
Koska tämä on bash, tarvitset pari tarkennusta käyttääksesi arvoa lausekkeessa:
- Sinun on lisättävä dollarimerkki ($) muuttujan nimeen.
- Sinun tulee myös käyttää henkselia ({}) tehdäksesi muuttujan nimestä yksiselitteisen. Oletuksena bash käsittelee $city[2] nimettynä muuttujana kaupunki. Lisää aaltosulkeet kertoaksesi bashille, että se arvioi myös hakasulkeet ja indeksinumeron.
Bash-taulukon vakiokäyttösyntaksi on sitten:
${muuttujan_nimi[indeksi]}
Tässä on täydellinen esimerkki:
#!/bin/bash
kaupunki=(Lontoo Pariisi Milano "New York")
echo ${city[3]}
#New York
Sen sijaan, että alustaisit taulukon kerralla, voit määrittää sen vaiheittain. Tämä kirjoitus on pidempi vastine edelliselle esimerkille:
#!/bin/bash
city[0]=Lontoo
kaupunki[1]=Pariisi
kaupunki[2]=Milano
kaupunki[3]="New York"
echo ${city[3]}
#New York
Huomaa, että kummassakin tapauksessa sinun on oltava varovainen, ettet lisää välilyöntiä yhtäläisyysmerkin ympärille. "city[0] = Lontoo", jossa on välilyöntejä yhtäläisyysmerkin ympärillä, aiheuttaa virheen.
Lisää Bash-taulukoiden käyttötapoja
Taulukot sopivat täydellisesti liittyvien tietojen tallentamiseen. Tässä on (erittäin rajoitettu) komentotulkkikomentosarja luvun neliöjuuren saamiseksi:
#!/bin/bash
sqrt[1]=1
sqrt[4]=2
sqrt[9] = 3
sqrt[16] = 4
sqrt[25] = 5
echo ${sqrt[$1]}
Huomaa, että komentosarja käyttää arvoa $1 taulukkoindeksinä. $1 edustaa ensimmäistä komentoriviargumenttia, jonka skripti vastaanottaa, joten voit suorittaa tämän skriptin seuraavasti:
$ ./sqrt.sh 9
3
Saatat olla tietoinen $(cmd) syntaksi komennon suorittamiseksi ja sen tulosteen tallentamiseksi muuttujaksi. Voit yhdistää tämän taulukon alustussyntaksiin saadaksesi joukon tiedostoja käytettäväksi:
arr=( $(ls) )
Joukko on usein täydellinen tietorakenne iterointiin ja Bash ei ole poikkeus. Voit käydä läpi taulukon tulostaaksesi jokaisen elementin tai suorittaaksesi toiminnon jokaiselle jäsenelle.
Voit osoittaa taulukon sisään a varten.. sisään silmukka, iteroidaksesi sen sisältöä. Esimerkiksi tässä on yksinkertainen silmukka, joka tulostaa rivien lukumäärän taulukon jokaisessa tiedostossa arr:
tiedostolle "${arr[@]}"; tehdä
wc -l "$tiedosto"
tehty
# 3 envvars
# 547 httpd.conf
# ...
Huomaa, että tämä malli käyttää hyväksi @ symboli hakeaksesi kaikki elementit taulukosta.
Lisää Bash Array -syntaksia
Voit saada taulukon kohteiden määrän seuraavilla tavoilla:
echo ${#city[@]}
# 4
Voit lisätä uuden elementin vakiotaulukon loppuun seuraavasti:
arr+=(4)
Joten lisätäksesi viidennen kaupungin luetteloon:
kaupunki+=(Rooma)
echo ${city[@]}
# Lontoo Pariisi Milano New York Rooma
Voit poimia osan taulukosta käyttämällä syntaksia, joka vastaa likimääräistä monien muiden kielten leikkaustoimintoa:
${arr[@]:s: n}
Tämä syntaksi palauttaa osan taulukosta, joka alkaa sijainnista s ja sisältävät n kohteita. Voit jättää väliin :n osa, josta voit poimia kaikki kohteet s listan loppuun asti.
echo ${city[@]:2:2}
#Milano New York
echo ${city[@]:3}
#New York Rooma
Bashilla on monia ominaisuuksia, ne vaativat vain jonkin verran oppimista
Bashin taulukoilla voi olla rajoituksia, mutta ne tarjoavat samat perustoiminnot kuin useimmat ohjelmointikielet. Vaikka bash on historiallisesti tukenut vain yksinkertaisia yksiulotteisia taulukoita, ajat ovat muuttumassa. Bashin uusin versio 4 tukee assosiatiivisia taulukoita ja negatiivisten taulukoiden indeksointia.
Riippumatta siitä, mitä bash-versiota käytät, on tärkeää ymmärtää sen vivahteet. Jopa normaalissa muuttujasyntaksissa on paljon omituisuuksia.
Bash-muuttujien selitys: Yksinkertainen esimerkkejä sisältävä opas
Lue Seuraava
Liittyvät aiheet
- Ohjelmointi
- Linux
- Ohjelmointi
- Linux Bash Shell
- Käsikirjoitus
Kirjailijasta
Bobby on teknologian harrastaja, joka työskenteli ohjelmistokehittäjänä useimmat kaksi vuosikymmentä. MUO: ssa hän on ohjelmointiosion nuorempi toimittaja. Hän on intohimoinen pelaamiseen, työskentelee Switch Player -lehden päätoimittajana ja on uppoutunut kaikkiin verkkojulkaisemiseen ja verkkokehitykseen.
tilaa uutiskirjeemme
Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja eksklusiivisia tarjouksia!
Klikkaa tästä tilataksesi