A változók a bármilyen típusú kódolás legalapvetőbb adatszerkezete. Az egyedi változók azonban aligha elegendőek a legtöbb célra, különösen, ha összetettebb algoritmusokkal foglalkozunk.
Itt jönnek be a tömbök. Legyen szó C++-ról vagy Piton -ről, a tömbök valamilyen formában minden programozási nyelvben jelen vannak. De mi a helyzet a Windows PowerShell-lel? Hogyan működnek a PowerShell-tömbök? Hogyan használod őket? Mi a szintaxisuk? Nézzük meg.
PowerShell-tömbök 101
Egyszerűen szólva egy tömb csak változók strukturált gyűjteménye. Az ötlet az, hogy kiküszöböljük a több tucat név nyomon követésével járó gondot azáltal, hogy összevonjuk a kapcsolódó változókat egy számozott halmazba.
A PowerShellben úgy hozhat létre változót, hogy a $ szimbólumot egy változónév elé fűzi. Például:
$prím = 13
A változó bármilyen adattípust tartalmazhat, a számoktól a karakterláncokig. Csak dupla vagy szimpla idézőjeleket kell használnia egy karakterlánc megadásához.
$name = „Levin”
Most új tömb létrehozásához egyszerűen rendeljen több értéket ugyanahhoz a változóhoz, vesszővel elválasztva. Így:
$week = „hétfő”, „kedd”, „szerda”, „csütörtök”, „péntek”, „szombat”, „vasárnap”
Néhány ember jobban szeret egy változót kifejezetten egy tömbbe önteni, hogy elkerülje a félreértést, bár ez nem szükséges. Ehhez tegye az értékeket zárójelbe a @ szimbólummal.
$hét = @("hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat", "vasárnap")
Ez általában akkor hasznos, ha más parancsok kimenetét egy tömbbe próbálja elhelyezni, ahol nem lehet őket manuálisan a megfelelő formátumban írni.
Tömb létrehozása
Már láttuk a tömb létrehozásának leggyakoribb módszerét. De a helyzettől függően vannak más módszerek is, amelyek alkalmasabbak lehetnek. Ha például egy számtartományt tartalmazó tömböt szeretne létrehozni, használhatja a tartomány operátort:
$digits = (0..9)
Ez létrehoz egy tömböt a tíz számjegyből nullától kilencig. Egy üres tömböt is inicializálhat, ha később szeretne egy helyet az értékek tárolására..
$értékek = @()
Több tömb egymásba is ágyazható, bár ez a fajta használat nagyon gyorsan megzavarhatja.
$koordináták = @(
(5, 10, 23),
(11, 7, 16)
)
Alapértelmezés szerint egy tömb bármilyen típusú változót tárolhat, legyen szó számokról, karakterláncokról vagy a kettő keverékéről. De explicit módon meghatározhat egy típust arra az esetre, ha korlátozni szeretné a benne elhelyezett értékeket. Például:
[int[]] $számok = 2,3,4,5
Így a tömb csak egész számokat tartalmazhat. Ha bármilyen más típusú értéket próbál hozzárendelni, az hibát ad vissza. Ez hasznos lehet a kizárólag numerikus értékekkel dolgozó tömbök egyszerű hibáinak megelőzésére, mivel a számításokhoz használt változóba karakterlánc beírása problémákat okoz.
Hozzáférés a tömbökhöz
Eddig többféle módszert láttunk különböző típusú adatokat tartalmazó tömbök létrehozására. De hogyan fér hozzá ezekhez az adatokhoz?
A PowerShell tömbök ugyanazt a formátumot használják, mint a többi programozási nyelv. Minden tömbváltozó az indexszámával érhető el. Például:
$var = $számok[5]
Ez átmásolja a $numberstömb öt indexében tárolt értéket a $varváltozóba. Vegye figyelembe, hogy a tömb indexei 0-tól kezdik a számolást, így az első elem nullával érhető el.
Ha például ezt adnánk ki:
„$days[2]”
A szerda lesz, nem a kedd.
Ugyanezt a módszert használhatja ezen értékek módosítására is. Például a következő parancs a tömb második elemét nullára módosítja:
$számok[1] = 0
További elemeket is hozzáadhat egy meglévő tömbhöz ahelyett, hogy megváltoztatná az aktuális bejegyzések értékét, pusztán számtani kifejezésként hozzáadva őket.
$names += „Johny”
Ez a módszer használható több bejegyzés vagy akár teljes tömbök egyidejű hozzáadására is.
$names += „Charlie, Liam, Teresa”
$names += $vezetéknevek
A vesszővel elválasztott metódus több tömbelem eléréséhez is érvényes. Ennek megadása például a $dayselső öt elemét tárolja a $weekdays-ban..
$weekdays = $days[0,1,2,3,4]
Iterálás tömbökön keresztül
Egy tömb egyes elemeinek kézi elérése jó és jó, de ha egy tömb teljes tartalmával szeretne műveleteket végrehajtani, az fárasztó lehet. Elegánsabb megközelítés a For ciklus használata.
A for ciklusok szisztematikusan át tudnak menni egy tömb összes elemén, és az egyes értékeket az utasításoknak megfelelően dolgozzák fel. Így hozhat létre egy ilyen ciklust:
A ($i = 0 ; $i -lt $days.Length ; $i++)
{
$days[$i]
}
Az array.Length függvény a tömb méretét adja vissza, ami alapvetően a benne lévő elemek száma. Ez beilleszthető egy For ciklus tesztkifejezési paraméterébe, hogy átfogóan iterálhasson minden elemet.
A Foreach ciklus és a Foreach-objektum hurok ugyanezt megteheti egy még egyszerűbb PowerShell-szkripttel.
Foreach ($day in $day)
{
$day
}
Ezzel megspórolhatja a tömb méretének meghatározását, és a részleteket a PowerShell kezelheti.
Mikor érdemes PowerShell-tömböket használni
Az összetett szkriptekben a hibák legnagyobb forrása a helytelenül hivatkozott változók. Ennek oka a nagyszámú egyedi elnevezésű változó jelenléte, ami megnehezíti a céljuk megjegyezését.
A probléma legegyszerűbb megoldása a tömbök széles körű használata. Az összes valamilyen módon kapcsolódó változó hozzárendelhető egyetlen tömbhöz, és az indexszámukon keresztül érhető el.
AMicrosoft PowerShell fő használati eset az automatizálás, és ebben a tömbök kulcsszerepet játszanak. A PowerShell-parancsmagok által visszaadott objektumok tömbökben tárolhatók, és ismételhetők. Ez lehetővé teszi az egymást követő feladatok automatikus végrehajtását, ami nagyban leegyszerűsíti a rendszer adminisztrációját.
.