Ismerkedjen meg a Bash tömbökkel – hogyan deklarálhatja, kezelheti és törölheti őket.

A tömbök olyan adattárolók, amelyek olyan értékek tárolására szolgálnak, amelyek valamilyen kapcsolatban állnak egymással. A legtöbb programozási nyelvtől eltérően a Bash tömbök különböző adattípusok értékeit tárolhatják ugyanabban a tömbben.

A Bash-nek kétféle tömbje van: indexelt tömbök és asszociatív tömbök. Az indexelt tömbök esetében az indexek 0-tól (n-1)-ig kezdődnek, ahogy ez a legtöbb nyelvben megszokott. A Bash-ban azonban ritkák a tömbök. Ez azt jelenti, hogy hozzárendelheti az (n-1)-edik tömbelemet anélkül, hogy hozzárendelné az (n-2)-edik elemet.

Ebből az oktatóanyagból megtudhatja, hogyan kell tömbökkel dolgozni a Bashban. Kezdjük el.

Tömbök meghatározása

Háromféleképpen határozhat meg tömböket a Bashban. A Bash-változókhoz hasonlóan a tömböket is inicializálni kell a létrehozáskor. Ez alól az egyetlen kivétel, ha a kijelent kulcsszó. Arra is ügyelnie kell, hogy a tömb inicializálása közben ne maradjon szóköz a hozzárendelési operátor egyik oldalán sem.

Az első módszer az értékek összetett hozzárendelése a tömb nevéhez. Ennek két módja van:

arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)

Az első összetett hozzárendelésnél a kerek zárójelben lévő értékek egymás után kerülnek hozzárendelésre az indexből [0] nak nek [3].

A másodikban azonban az értékek egy indexhez vannak rendelve, a programozó által megadott sorrendben.

Összefüggő: Mik azok a környezeti változók a Linuxban? Minden, amit tudnod kell

Ha alaposan észrevette arr2, észre fogja venni ezt az indexet [2] kimaradt. A tömb továbbra is hiba nélkül jön létre. Ez a feladat valójában a Bash tömbök ritka tárolásának demonstrációja, ahogyan azt korábban érintettük.

Figyeljük meg, hogy a tömbértékeket nem választja el vessző. Az értékeket egyszerűen szóközök választják el.

A második módszer közvetetten deklarálja a tömböt. Elkezdheti az értékek hozzárendelését a null tömb elemeihez:

arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes

A harmadik módszer a tömb kifejezett deklarálása a kulcsszóval kijelent:

declare -a arrayName

Műveletek tömbökön

A tömbelemek eléréséhez használja a következő szintaxist: ${array[index]}

fruits=(mango banana apples)
echo${fruits[1]}# output is banana

Ha inkább ki kell nyomtatnia a teljes tömböt, használja a @ szimbólum, mint a

index nak,-nek ${array[index]}:

echo${fruits[@]}

A tömb elemeinek számának meghatározásához használja a # szimbólum az alábbiak szerint:

echo ${#fruits[1]}

Előfordulhat, hogy módosítania kell a tömbelemeket is – ehhez lásd az alábbi példát. Hasonló az új elem hozzáadásához. Az egyetlen különbség az, hogy egy értéket olyan indexre cserél, amely már rendelkezik értékkel.

fruits[1]=pears

Asszociatív tömbök

Az olyan tömböt, amelynek kulcsai tetszőleges értékek vannak, asszociatív tömbnek nevezzük. Ezek a tömbök a kapcsolódó kulcs-érték párok tárolására szolgálnak.

Összefüggő: Hogyan lehet a Bash-szkripteket kattintható alkalmazásokká alakítani az AppleScript segítségével

Egy asszociatív tömb definiálásához ezt kifejezetten a kulcsszó használatával kell megtennie kijelent.

# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast

A tagelemeket ugyanúgy érheti el, mint az indexelt tömböket:

echo${animal[lion]}

Ha az összes értéket ki szeretné nyomtatni, használhatja a @ szimbólum az alábbiak szerint:

echo${animal[@]}

Ha az összes tömbkulcsot ki szeretné nyomtatni, használhatja a @ és ! szimbólumok az alábbiak szerint:

echo${!animal[@]}

Az asszociatív tömb elemeinek számának meghatározásához használja ugyanazt a szintaxist, amelyet az indexelt tömböknél használ (az utolsó részben bemutatva).

Ha törölni szeretne egy tömbelemet vagy a teljes tömböt, használja az alábbi szintaxist:

unset arrayName[Key] # delete array item
unset arrayName # delete entire array

A printf parancs használata

Talán észrevette, hogy ez az egész cikk a visszhang paranccsal, hogy adatokat adjon ki a shellbe. A visszhang parancs működik ehhez az oktatóanyaghoz, de kevés funkcióval és rugalmassággal rendelkezik a karakterlánc formázása terén.

Azonban a printf A parancs specifikusabb formázási beállításokat kínál, amelyek a Bash-szkriptek gyors végrehajtását teszik lehetővé. Tanulás a printf funkció minden bizonnyal javítja a karakterláncformázási élményt és a Bash hatékonyságát.