Sissejuhatus PowerShelli silmustesse

Kui vajame midagi korduvat tööd, vajame silmuseid alati. Silmustes juhime korduvalt kooditükki või mis tahes avaldust. Üks tõeline näide, kui oletame, et koolis on 20000 õpilast ja mingil põhjusel otsustas ülikool anda igale õpilasele eksamite eest 5 hinnet rohkem. Nii on ülikool otsustanud anda need 5 hindepunkti igale üliõpilasele, välja arvatud need, kelle osavõtt on vähem kui 100 päeva. Nüüd eeldate lihtsalt, kuidas töötajad seda teevad, peavad nad kontrollima iga õpilase hindeid ja aasta osalemist. Kuid sama asja oleks võinud teha mis tahes silmuse abil väga hõlpsalt, luues õpilaste massiivi koos oma hinnete ja osalemiskuupäevadega. Seeläbi saame silmuse abil säästa täiendavaid jõupingutusi. Mõistagem üksikasjalikult PowerShelli silmuseid.

PowerShelli silmuste tüübid

PowerShellis saab silmuse käitamiseks kasutada mitmeid viise, kuid see sõltub alati teie nõudmistest ja programmi teostatavusest, näiteks kui soovite vähemalt ühe massiivi jaoks käivitada vähemalt ühe korra, kui peaksime kasutama teistsugust silmuse jaoks mõeldud teisaldamisahelat ja igaühe jaoks, mis on head .

Tüübid ja nende näited on toodud allpool:

1. Kuigi

Kui avaldus võtab tingimuseks argumendi ja avalduse täitmine teatud aja piires sõltub tingimusest, tähendab see, et kui tingimus on edukas, siis see täidab avaldust muul viisil.

Süntaks:

while(condition)
(
Statement 1
Statement 2
….
)

Näide:

$j = 0
while($j -lt 10)
(
Write-Output $j
$j++ )

Allpool kuvatakse kood ülaltoodud koodi täitmiseks

2. Tehke samal ajal

Tehke ajal, mis sarnaneb kui ahelsilmusega, erinevus on see, kas see käivitatakse vähemalt üks kord, see tähendab, et see täidab esimest korda do plokki ja blokeerimise ajal, kui tingimus on tõene. Allpool toodud süntaksis blokeeritakse esimest korda kindlasti.

  • Tehke : see plokk käivitatakse esimest korda üks kord, kui käivitamine algab.
  • Kuigi : 1. ja 2. väite täitmine sõltub täielikult tingimuse õnnestumisest.

Süntaks:

Do
(
Statement 1
Statement 2
….)while(condition)(
Statement 3
Statement 4
…..
)

Näide nr 1:

$j = 0
do
(
Write-Output $j // this block will execute first time
$j++
)while($j -lt 10)

Näide 2:

Selles näites käivitab do block esimest korda isegi tingimuse, mis polnud tõene.

$j = 0
do
(
Write-Output $j
$j--
)while($j -gt 0)

Mõlema programmi ekraan on näidatud allpool

3. Tee kuni

Tehke seni, kuni see on pisut teistsugune kui tehes, tehes, kuni täitmine jätkub, kuni tagastatakse negatiivne tulemus “kuni blokeerimiseni”. Kaks asja on siin olulised.

  • Tehke : see plokk jätkab täitmist, kuni ploki tingimus ebaõnnestub, see tähendab, kuni plokk tagastab negatiivse väärtuse.
  • Kuni : blokeerige lause 1 ja lause 2 täitmine, kuni tingimused annavad negatiivseid tulemusi.

Süntaks:

do
(
Statement 1
Statement 2
….
)until(condition)

Näide:

$i = 0
do
(
Write-Output $i
$i++
)until($i -ge 5) //keep checking condition

Plokis “tee kuni” näeme, et do-ploki täitmine jätkub, kuni tingimus “kuni plokk” tagastab positiivse väärtuse.

Allpool kuvatakse kood ülaltoodud koodi täitmiseks

4. jaoks

Väljavõtte jaoks käivitatakse algsätte põhjal avalduste loend null või enam korda. Allpool olevas silmuse süntaksis on kolm olulist jaotist

  • Initsialiseerimisjaotis : selles jaotises määras ta igale muutujale algväärtuse, see jaotis töötab esimest korda üks kord.
  • Tingimus : tingimusosades kirjutame oma tingimuse, mille jaoks silmus töötab, mis tähendab, et avalduse ploki täitmine sõltub alati tingimuse osade õnnestumisest, kui tingimus on tõene, siis avalduse plokk täidab muul juhul mitte.
  • Operatsioon : selles plokis saame muutuja või muude asjade lähtestamise väärtust vastavalt oma vajadustele suurendada, vähendada või muuta.

Süntaks:

for($initialisation; condition; operation)
(
Statement 1
Statement 2
….
)

Näide nr 1:

for($i = 0; $i -lt 3; $i++)
(
Write-Output $i
)

Ülaltoodud koodi väljundkuva

Mitu korda ühest ahelast ei piisa meie nõuete täitmiseks, nii et saame kasutada silmuste jaoks pesasid. Peaksime püüdma vältida silmuste pesitsemist, kuna nende ajaline keerukus võib väga suureks minna, kui neid õigesti ei käsitata. Allpool on näide silmuse pesastamise kohta.

Näide 2:

for($j = 0; $j -lt 3; $j++)
(
$line = ''for($j = 0; $j -lt 3; $j++)
(
$line += $j.ToString() + $j.ToString() + ' '
)
Write-Output $line
)

Väljund: 00 11 22

5. Igaks

“Foreach” töötab avaldusplokke järjestikku kuni massiivi viimase üksuseni. Hea on FOREachi avalduse kohta see, et me ei pea üksikute massiivi eraldamiseks eraldi koodi kirjutama. Üldiselt on „foreach” „for” -silmuse optimeeritud versioon, mis annab massiivi sisemise elemendi ilma ühtegi programmi kirjutamata. Siin kontrollitakse lihtsalt massiivi sisestuses olevaid elemente, millel meil on “foreach” silmus, kui mõni element seal asub, täidab ta lause 1 ja väite 2 plokid.

Süntaks:

foreach($arrayItems)
(
Statement 1
Statement 2
…..
)

Näide:

$numbers = 23, 21, 22, 78
foreach($number in $numbers)
(
“$number is now =“ +$number
)

Ekraani all näidatakse ülaltoodud hukkamisi

PowerShelli silmuste eelised

Silmuse kasutamise suurim eelis on see, et see vähendab liiga palju käsitsitööd ning on väga hea kontrollida andmete suurt mahtu samalaadse tegevusega sellel. Ütleme nii, et ma tahan, et te prindiksite 1 kuni 1000000 ja ma ütlesin teile, et võite lisada igale arvule, mis jagatakse 2-ga, mis on paarisarv, 1. Kui hakkate ükshaaval printima ja proovite lisada igale paarisarvule 1, võtab see liiga palju aega. Nii et teie soovitatud parem ja hõlpsam viis oli lihtsalt korrata seda numbrile lisamise protsessi, kuni jõuame 1000000-ni. Suurim kasu, mida silmusest saame, on see, et me kasutame sama kooditükki, me ei pea kirjutama sama kood lakhsi andmete korral käivitab see koodi automaatselt lõpuni.

Allpool on toodud mõned eeliste punktid

  • Suurendage koodi korduvkasutatavust, mis muudab koodi väiksemaks
  • Kiire arvutamine suurandmete jaoks, säästes palju käsitsitööd
  • Koodi liiasus on vähem.

Näide koos selle eelistega

Küsimus: trükkida kuni 1000-ni.

Without loop,
Write-Output 1;
Write-Output 2;
Write-Output 3;
Write-Output 4;
…so on
Till 100

With loop,
$x=1..100
foreach($y in $x)(
Write-Output $y;
)

Soovitatavad artiklid

See on olnud teemaks PowerShelli Loops. Siin käsitleme PowerShelli silmuste tüüpe koos nende eelisega. Ja avastasime, et silmused on väga võimas tööriist, kus sama koodi kasutamiseks on vähem vaeva. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Mis on Shelli skriptimine?
  2. PowerShelli stringifunktsioonid
  3. PowerShelli operaatorid
  4. PowerShelli käsud
  5. PowerShelli massiivi näited

Kategooria: