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:

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

Ossza megCsipogOssza megEmail

Kapcsolódó témák

  • Programozás
  • Linux
  • Programozás
  • Linux Bash Shell
  • Szkriptelés

A szerzőről

Bobby Jack (71 cikk megjelent)

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.

Továbbiak Bobby Jacktől

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