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

Puteți, de asemenea, să adăugați array-uri împreună:

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

Puteți accesa un element al unui array dacă știți numărul de index al elementului pe care îl doriți. Array-urile sunt indexate cu numere întregi începând cu 0. Acest lucru poate fi văzut cu următorul cod:

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

În acest moment puteți utiliza acel element ca și cum ar fi o variabilă obișnuită. Din moment ce array-ul nostru este un array de șiruri de caractere, putem folosi funcții de șiruri de caractere ca și cum ar fi o variabilă obișnuită setată la acea valoare de șir atunci când apelăm elementul acestui array. de exemplu:

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

For Loops

Array-urile pot fi, de asemenea, accesate liniar cu ajutorul buclelor for. O buclă for are, în general, 3 biți de informații în declarația lor:

  1. Inițializare
  2. Condiție pentru a continua bucla
  3. O întâmplare care se repetă – Aceasta este în general utilizată pentru a aduce bucla mai aproape de a nu îndeplini condiția pentru bucla dvs. astfel încât bucla să se încheie în cele din urmă.

Acest lucru este cel mai bine văzut prin examinarea unei bucle simple. Ceea ce urmează se va inițializa prin setarea lui $i la 1. Apoi va testa dacă $i este mai mic de 6 și va crește $i cu unu la fiecare trecere a buclei:

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

În exemplul de mai sus folosim operatorul de comparație -lt pentru a testa dacă valoarea lui $i este mai mică de 6. Există mulți alți operatori de comparație disponibili, cum ar fi -gt (mai mare decât), -le (mai mic decât sau egal cu), -ge (mai mare decât sau egal cu), -eq (egal) și -ne (nu este egal). Pentru a afla mai multe despre operatorii de comparație disponibili puteți utiliza următoarea comandă:

help about_comparison_operators

Pentru bucle cu array-uri

Este ușor de văzut cum puteți aplica o buclă unui array pentru a itera prin fiecare element al array-ului în ordine, dacă ar exista doar o modalitate de a testa câte elemente sunt în array. Putem face acest lucru prin utilizarea unui membru al obiectului array numit Length. Ceea ce trebuie să rețineți aici este că doriți să inițializați variabila index cu 0, deoarece acesta este primul element din tablou, dar doriți să testați dacă indexul este mai mic decât lungimea tabloului, deoarece ultimul element al tabloului va fi cu unul mai mic decât numărul de elemente din tablou. Iată procesul în practică:

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

Un mod și mai rapid de a face o buclă for este folosind o buclă specială foreach. Bucla foreach va seta o variabilă pentru fiecare element dintr-o listă cu o construcție mult mai simplă:

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

Ultimul lucru de reținut cu bucla foreach este că aceasta poate fi accesată prin intermediul pipeline-ului. Foreach care este utilizat în pipeline este, de fapt, un alias pentru ForEach-Object. Utilizarea pipeline-ului în acest mod este o modalitate mai rapidă de a scrie un foreach, dar poate genera o anumită suprasolicitare atunci când se lucrează cu seturi mari de date. Atunci când utilizați foreach prin intermediul pipeline-ului, vi se oferă o variabilă specială pentru a reprezenta elementul din blocul de cod, $_:

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

Am văzut deja bucla foreach în acțiune în pipeline în timpul părții 2 a acestei serii, când am analizat modul de citire a fișierelor. Iată un fragment din acel cod, astfel încât să puteți vedea cum un cmdlet poate trece o listă printr-o buclă foreach:

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

Listele și array-urile sunt foarte importante pentru programare și scripting. Rar există un script care să nu folosească o matrice sau o listă într-o formă sau alta. Armed with this knowledge you can start looping away. We’ll be touching on regular expressions in the next tutorial. Until next time…

Advertisements

Lasă un comentariu