Powershell – Part 4 – Arrays and For Loops

X

Privacy & Cookies

This site uses cookies. By continuing, you agree to their use. Learn more, including how to control cookies.

Got It!

Advertisements

Arrays

For those that have never worked with arrays here’s a great way to understand them: If a variable is a piece of paper then the stack of papers is an array. It’s a list of variables or objects, and every programming/scripting language has ways to store these variables or objects linearly so you can access them later via a number of different methods.

So let’s look at how we can create an array of string objects in powershell:

$array = @("test1", "test2", "test3")$array

You can also add an element to the end of an array:

$array = @("test1", "test2", "test3")$array += "test4"$array

Tömböket is összeadhatunk:

$array = @("test1", "test2", "test3")$array2 = @("test4", "test5")$array = $array + $array2$array

Elérhetjük egy tömb elemét, ha tudjuk a kívánt elem indexszámát. A tömbök indexelése egész számokkal kezdődik 0-val. Ez a következő kóddal látható:

$array = @("test1", "test2", "test3")"First array value: " + $array"Second array value: " + $array"Third array value: " + $array

Az elemet ekkor úgy használhatod, mintha egy hagyományos változó lenne. Mivel a tömbünk egy stringekből álló tömb, a tömb elemének meghívásakor úgy használhatjuk a string függvényeket, mintha ez egy hagyományos változó lenne, amelyet erre a string értékre állítunk. pl.:

$array = @("test1", "test2", "test3")$array.ToUpper()

For ciklusok

A tömbökhöz lineárisan is hozzáférhetünk a for ciklusok segítségével. Egy for hurok általában 3 információt tartalmaz a deklarációjában:

  1. Inicializálás
  2. Feltétel a hurok folytatásához
  3. Egy ismétlődő előfordulás – Ezt általában arra használjuk, hogy a hurok közelebb kerüljön ahhoz, hogy ne teljesüljön a hurok feltétele, így a hurok végül véget ér.

Ez leginkább egy egyszerű cikluson keresztül látható. A következő úgy inicializálódik, hogy $i-t 1-re állítja, majd teszteli, hogy $i kisebb-e 6-nál, és a ciklus minden egyes lépésénél eggyel növeli $i-t:

for ($i=1;$i -lt 6; $i++) {"This is line number " + $i}

A fenti példában a -lt összehasonlító operátorral teszteljük, hogy $i értéke kisebb-e 6-nál. Számos más összehasonlító operátor is rendelkezésre áll, például -gt (nagyobb, mint), -le (kisebb vagy egyenlő), -ge (nagyobb vagy egyenlő), -eq (egyenlő) és -ne (nem egyenlő). A rendelkezésre álló összehasonlító operátorok megismeréséhez a következő parancsot használhatja:

help about_comparison_operators

For Loops with Arrays

Egyszerűen belátható, hogy egy tömbre hurkot alkalmazva a tömb minden elemét sorrendben végig lehet iterálni, ha csak arra lenne mód, hogy megvizsgáljuk, hány elem van a tömbben. Ezt a tömb objektum Length nevű tagjának használatával tehetjük meg. Itt azt kell megjegyeznünk, hogy az index változót 0-val akarjuk inicializálni, mivel ez az első elem a tömbben, de azt is tesztelni akarjuk, hogy az indexünk kisebb-e, mint a tömb hossza, mivel a tömb utolsó eleme eggyel kevesebb lesz, mint a tömb elemeinek száma. Íme a folyamat a gyakorlatban:

$array = @("test1", "test2", "test3")for ($i=0; $i -lt $array.length; $i++) {$array}

Egy még gyorsabb módja a for ciklusnak egy speciális foreach ciklus használata. A foreach ciklus egy sokkal egyszerűbb konstrukcióval a lista minden egyes eleméhez beállít egy változót:

$array = @("test1", "test2", "test3")foreach ($element in $array) {$element}

A foreach hurokkal kapcsolatban az utolsó dolog, amit meg kell jegyeznünk, hogy a csővezetéken keresztül érhető el. A csővezetékben használt foreach valójában a ForEach-Object egy aliasa. A pipeline ilyen módon történő használata gyorsabb módja a foreach megírásának, de nagy adathalmazok kezelése esetén némi többletköltséggel járhat. Amikor a foreach-et a csővezetéken keresztül használja, egy speciális változót kap, amely a kódblokkban lévő elemet, a $_-t jelöli:

$array = ("test1", "test2", "test3")$array |foreach {$_}

A sorozat második részében már láttuk a foreach ciklus működését a csővezetékben, amikor a fájlok olvasását vizsgáltuk. Íme egy kódrészlet abból a kódból, hogy láthassa, hogyan tud egy cmdlet egy listát átadni egy foreach cikluson:

Get-Content dictionary.txt | foreach {$_.toupper()}

A listák és a tömbök nagyon fontosak a programozás és a szkriptek készítése során. Ritkán van olyan szkript, amely valamilyen formában ne használna tömböt vagy listát. Armed with this knowledge you can start looping away. We’ll be touching on regular expressions in the next tutorial. Until next time…

Advertisements

Szólj hozzá!