A legtöbb programozási nyelvhez hasonlóan a bash szkripteknek is foglalkozniuk kell a kapcsolódó értékek listájával. A legegyszerűbb forma a szabványos tömb.
A bash-ban a tömbprogramozás egészen más, különösen ami a szintaxist illeti. A Bash tömbök szintén szigorúan egydimenziósak, de még mindig rengeteg felhasználási területük van.
A Bash tömbök alapvető szintaxisa
Egy tömb létrehozása bash-ban egyszerű. Egy teljes tömböt inicializálhat zárójelek használatával, például:
city=(London Paris Milan "New York")
(A várospélda összes kódját megtalálja itt ez a GitHub Gist.)
Ez létrehoz egy négy elemet tartalmazó tömböt, 0-tól 3-ig indexelve. Vegye figyelembe, hogy a negyedik érték egy idézőjeles karakterlánc, amely két szóból áll. Szóközöket tartalmazó értékeket kell idéznie annak egyértelművé tétele érdekében, hogy ezek nem különálló értékek.
Egyetlen elemhez férhet hozzá a programozási nyelvekben általános zárójeles szintaxissal:
város[2]
Mivel ez a bash, néhány finomításra lesz szüksége az érték tényleges használatához egy kifejezésben:
- Előre kell fűznie a dollárjelet ($) a változó nevéhez.
- Fogszabályzót is kell használnia ({}), hogy a változó neve egyértelmű legyen. Alapértelmezés szerint a bash kezeli $city[2] nevű változóként város. Adjon hozzá kapcsos zárójelet, hogy a bash kiértékelje a zárójeleket és az indexszámot is.
A szabványos bash tömb hozzáférési szintaxisa ekkor:
${változónév[index]}
Íme egy teljes példa:
#!/bin/bash
city=(London Paris Milan "New York")
echo ${city[3]}
#New York
Ahelyett, hogy egyszerre inicializálna egy tömböt, lépésről lépésre hozzárendelheti. Ez a szkript az előző példa hosszabb megfelelője:
#!/bin/bash
city[0]=London
city[1]=Párizs
város[2]=Milánó
city[3]="New York"
echo ${city[3]}
#New York
Vegye figyelembe, hogy mindkét esetben ügyeljen arra, hogy ne tegyen szóközt az egyenlőségjel köré. A „city[0] = London” szóközökkel az egyenlőségjel körül hibát generál.
A Bash tömbök további felhasználási lehetőségei
A tömbök tökéletesek a kapcsolódó adatok tárolására. Íme egy (nagyon korlátozott) shell szkript egy szám négyzetgyökének lekéréséhez:
#!/bin/bash
sqrt[1]=1
sqrt[4]=2
sqrt[9]=3
sqrt[16]=4
sqrt[25]=5
echo ${sqrt[$1]}
Vegye figyelembe, hogy a szkript az értéket használja $1 mint a tömb indexe. $1 a szkript által kapott első parancssori argumentumot képviseli, így ezt a szkriptet a következőképpen futtathatja:
$ ./sqrt.sh 9
3
Lehet, hogy tisztában vagy a $(cmd) szintaxis egy parancs végrehajtásához és a kimenetének változóba mentéséhez. Ezt kombinálhatja a tömb inicializálási szintaxisával, hogy egy fájltömböt kapjon, amellyel dolgozni fog:
arr=( $(ls) )
Egy tömb az gyakran tökéletes adatstruktúra az iterációhoz és Bash sem kivétel. Előfordulhat, hogy egy tömbön keresztül minden elemet kinyomtat, vagy minden tagon végrehajthat műveletet.
Egy tömböt megcímezhetsz a mert.. ban ben hurok, hogy ismételje meg a tartalmát. Például itt van egy egyszerű ciklus, amely kiírja a sorok számát a tömb egyes fájljaiban arr:
"${arr[@]}" fájlhoz; csináld
wc -l "$file"
Kész
# 3 envvars
# 547 httpd.conf
# ...
Vegye figyelembe, hogy ez a minta a @ szimbólumot az összes elem lekéréséhez a tömbből.
További Bash Array szintaxis
Egy tömb elemeinek számát a következő módszerekkel kaphatja meg:
echo ${#city[@]}
# 4
Hozzáadhat egy új elemet egy szabványos tömb végéhez, például:
arr+=(4)
Tehát egy ötödik város hozzáadása a listához:
város+=(Róma)
echo ${city[@]}
# London Párizs Milánó New York Róma
Egy tömb egy részének kinyeréséhez használhat olyan szintaxist, amely közelíti sok más nyelv szeletműveletét:
${arr[@]:s: n}
Ez a szintaxis a tömb egy, a pozícióval kezdődő szeletét adja vissza s és tartalmazó n tételeket. Kihagyhatja a :n rész az összes elem kinyeréséhez s a lista végéig.
echo ${city[@]:2:2}
# Milánó New York
echo ${city[@]:3}
# New York Róma
A Bash számos funkcióval rendelkezik, csak némi tanulást igényel
A bash tömböknek lehetnek korlátai, de ugyanazokat az alapvető funkciókat kínálják, mint a legtöbb programozási nyelv. Bár a bash történelmileg csak az egyszerű egydimenziós tömböket támogatta, az idők változnak. A bash legújabb, 4-es verziója támogatja az asszociatív tömböket és a negatív tömb-indexelést.
Bármelyik bash-verziót is használja, fontos megértenie annak árnyalatait. Még a normál változó szintaxisnak is rengeteg sajátossága van.
Bash-változók magyarázata: egyszerű útmutató példákkal
Olvassa el a következőt
Kapcsolódó témák
- Programozás
- Linux
- Programozás
- Linux Bash Shell
- Szkriptelés
A szerzőről
Bobby technológiai rajongó, aki két évtizeden át szoftverfejlesztőként dolgozott. A MUO-nál ő a programozási rész junior szerkesztője. Szenvedélyesen rajong a játékokért, a Switch Player Magazine főszerkesztőjeként dolgozik, és elmerül az online publikálás és webfejlesztés minden területén.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!
Kattintson ide az előfizetéshez