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:

instagram viewer
  • 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

JaaTweetJaaSähköposti

Liittyvät aiheet

  • Ohjelmointi
  • Linux
  • Ohjelmointi
  • Linux Bash Shell
  • Käsikirjoitus

Kirjailijasta

Bobby Jack (71 artikkelia julkaistu)

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.

Lisää Bobby Jackilta

tilaa uutiskirjeemme

Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja eksklusiivisia tarjouksia!

Klikkaa tästä tilataksesi