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.