Cum o buclă PowerShell For poate rula o comandă de mai multe ori


Bucla For este una dintre cele mai instrumente valoroase în orice limbaj de programare, iar  Microsoft PowerShell nu este diferit. Puteți folosi alte bucle pentru a repeta comenzile, dar bucla For este poate cea mai simplă.

De la iterare peste matrice până la executarea unei funcții de un număr predeterminat de ori, există multe lucruri pe care le puteți realiza cu acest instrument. Iată un tutorial despre cum să utilizați buclele For în PowerShell.

La ce folosește buclele For în PowerShell?

Spre deosebire de Prompt de comandă, PowerShell este un mediu complet de scripting. Aceasta înseamnă că puteți scrie Scripturi PowerShell reutilizabile pentru a efectua automat sarcini, în loc să introduceți comenzi manual. Și buclele For sunt cheia pentru scrierea acestor module.

O instrucțiune For repetă un bloc de script de un anumit număr de ori, modificând o anumită variabilă pentru a ține evidența progresiei. Acest lucru vă permite să utilizați bucla pentru unele scenarii destul de interesante.

Puteți genera secvențe de numere, puteți determina un număr prim sau puteți afișa un cronometru cu numărătoare inversă. Mai practic, puteți itera peste o serie de obiecte, efectuând o anumită acțiune cu fiecare intrare.

Sintaxa unei bucle For în PowerShell

Buclele For funcționează în Windows PowerShell la fel ca în orice limbaj de programare. Expresiile care inițializează variabila de urmărire, testează valoarea acesteia și modifică variabila sunt plasate între paranteze după „Pentru”, separate prin punct și virgulă. Apoi urmează lista de declarații în sine legată de acolade.

Pentru (Inițializare; Condiție; Actualizare)

    Bloc de script

}

Cum să utilizați bucla For într-un script PowerShell

Folosirea buclei For este destul de simplă. Ori de câte ori întâmpinați o situație care necesită repetarea unui pas ușor diferit, ar trebui să îl introduceți într-o buclă For.

Să presupunem că trebuie să scrieți un fragment de cod care să poată găsi suma tuturor numerelor naturale până la un număr n, conținut în variabila $n. Iată un exemplu de bază pentru bucla For:

$n = 10

$sum = 0

Pentru ($i = 1 ; $i -le $n ; $i++)

    $sum = $sum + $i

}

„Suma $n numere naturale este $sum”

Accesarea matricelor printr-o buclă For

.

Generarea de secvențe numerice nu este motivul pentru care majoritatea oamenilor folosesc PowerShell. O utilizare mai obișnuită este de a repeta peste o matrice.

Să presupunem că aveți o matrice $week cu șapte elemente. Puteți scoate lista zilelor conținute în matrice folosind o buclă For simplă, așa cum este demonstrat în exemplul următor.

Pentru ($i = 0 ; $i -lt $săptămână.Lungime ; $i++)

    $săptămână[$i]

}

Folosirea buclei ForEach pentru a repeta rapid printr-o matrice

O altă formă a buclei For este instrucțiunea ForEach. Această versiune simplifică parcurgerea conținutului unei matrice PowerShell și procesarea lor individual. Fragmentul de cod anterior, de exemplu, poate fi rescris astfel:

Foreach ($zi în $săptămână)

    $day

}

Când aveți de-a face cu obiecte mai complexe, puteți utiliza și cmdletul Foreach-Object pentru a efectua o acțiune asupra conținutului oricărei comenzi PowerShell.

Cum este bucla For diferită de alte tipuri de bucle?

Bucla For nu este singurul tip de declarație de buclă disponibilă pentru dvs. La fel ca majoritatea limbajelor de programare, PowerShell are mai multe tipuri de bucle.

În timp ce

Cea mai simplă dintre acestea este bucla While. Tot ce aveți este o condiție și un bloc de script, iar bucla rulează atâta timp cât expresia de test este evaluată la adevărat. Deoarece expresia este evaluată mai întâi, există șansa ca codul să nu ruleze deloc sau să ajungă ca o buclă infinită.

În timp ce (Condiție)

    Bloc de script

}

Faceți în timp ce

Dacă scrieți un script care trebuie să ruleze cel puțin o dată – chiar dacă expresia este evaluată ca falsă – atunci puteți utiliza bucla Do-While. Singura diferență față de bucla While este că plasează blocul de comandă înaintea condiției, ceea ce înseamnă că codul este executat înainte ca expresia de testare să fie verificată pentru prima dată.

    Bloc de script

}

În timp ce (Condiție)

Fă-Până

O altă versiune a acestei bucle este Do-Until. Practic, rulează blocul de cod și apoi îl repetă până când expresia de test este adevărată - inversul unei bucle Do-While. Nu este o structură deosebit de utilă, deoarece puteți obține același lucru modificând condiția într-o buclă standard Do-While..

    Bloc de script

}

Până la (Condiție)

De ce este mai bună bucla For

Problema cu toate aceste alte structuri de buclă este că nu includ valoarea inițială sau instrucțiunile de actualizare. Trebuie să vă amintiți manual să creați o variabilă în afara buclei și apoi să o incrementați (sau să o reduceți) în timpul fiecărei treceri a buclei.

Așa cum v-ați putea aștepta, programatorii uită adesea acest pas, ceea ce duce la un script care nu funcționează conform intenției. Acest lucru pierde timp prețios în depanare.

Bucla For evită această problemă prin necesitatea inițializării și a expresiilor de incrementare din parantezele de început. Acest lucru duce la scripturi mai curate și mai robuste.

Când ar trebui să utilizați bucla For în PowerShell?

PowerShell se referă la crearea de scripturi pentru automatizare. Și probabil cel mai util instrument pentru a realiza acest lucru este bucla For. Îl puteți folosi pentru a înlocui multe operațiuni de copiere-lipire cu un script mai compact și mai elegant.

Cea mai obișnuită funcție a acestei bucle este de a itera pe o matrice, câte o intrare. Pentru un script și mai simplificat, puteți utiliza și o buclă ForEach. De asemenea, puteți utiliza bucla For pentru a genera secvențe numerice, deși acest lucru este rareori necesar.

Bucla For are scoruri față de alți algoritmi de buclă prin includerea tuturor funcțiilor esențiale ale unei bucle în parametri, prevenind orice eroare datorată uitării acelor instrucțiuni. Acest lucru face bucla For indispensabilă în orice scenariu care necesită repetarea unui set de comenzi.

.

Postări asemănatoare:


5.04.2022