วนซ้ำใน PowerShell | ประเภทของลูปใน PowerShell พร้อมสิทธิประโยชน์
ข้อมูลเบื้องต้นเกี่ยวกับลูปใน PowerShell
เราจะต้องมีการวนซ้ำเสมอหากเรามีงานที่ต้องทำซ้ำๆ ในวง เราจะรันโค้ดหรือคำสั่งใดๆ บนพื้นฐานที่ซ้ำๆ ตัวอย่างที่แท้จริงอย่างหนึ่ง สมมติว่าในโรงเรียนมีนักเรียน 20,000 คน และด้วยเหตุผลบางประการ มหาวิทยาลัยจึงตัดสินใจให้คะแนนเพิ่มเติม 5 คะแนนสำหรับการสอบให้กับนักเรียนทุกคน มหาวิทยาลัยจึงตัดสินใจให้คะแนน 5 คะแนนนี้แก่นักศึกษาทุกคน ยกเว้นนักศึกษาที่เข้าเรียนน้อยกว่า 100 วัน ตอนนี้คุณแค่คิดว่าเจ้าหน้าที่จะทำอย่างไร พวกเขาจะต้องตรวจสอบคะแนนและการเข้าเรียนของนักเรียนทุกคนในปีนั้น แต่สิ่งเดียวกันด้วยความช่วยเหลือของ Any loop ก็สามารถทำได้ง่ายมาก โดยการสร้างอาร์เรย์ของนักเรียนพร้อมคะแนนและวันที่เข้าเรียน ด้วยการใช้ลูปเราสามารถประหยัดความพยายามพิเศษได้ ให้เราเข้าใจลูปใน PowerShell โดยละเอียด
ประเภทของลูปใน PowerShell
มีหลายวิธีในการรันลูปใน PowerShell แต่จะขึ้นอยู่กับความต้องการและความเป็นไปได้ของโปรแกรมของคุณเสมอ ตัวอย่างเช่น หากคุณต้องการดำเนินการอย่างน้อยหนึ่งครั้งสำหรับอาร์เรย์ใดๆ เกินกว่าที่เราควรใช้ do- While loop อย่างอื่นก็มี for loop และสำหรับแต่ละคนที่ดี.
ประเภทและตัวอย่างมีดังต่อไปนี้:
1. ในขณะที่
ในขณะที่คำสั่งรับเงื่อนไขเป็นอาร์กิวเมนต์และการดำเนินการของคำสั่งภายใน while loop นั้นขึ้นอยู่กับเงื่อนไข นั่นหมายความว่าหากเงื่อนไขสำเร็จ คำสั่งนั้นก็จะดำเนินการคำสั่งอื่นไม่สำเร็จ
ไวยากรณ์:
while(condition)
{
Statement 1
Statement 2
….
}ตัวอย่าง:
$j = 0
while($j -lt 10)
{
Write-Output $j
$j++ }ด้านล่างเป็นหน้าจอสำหรับการเรียกใช้โค้ดด้านบน
2. ทำในขณะที่
Do while คล้ายกับ while loop ความแตกต่างเพียงอย่างเดียวคือจะดำเนินการอย่างน้อยหนึ่งครั้ง นั่นหมายความว่าจะดำเนินการ do a block เป็นครั้งแรก และในขณะที่ block หากเงื่อนไขเป็นจริง ในไวยากรณ์ด้านล่างให้ทำการบล็อกดำเนินการเป็นครั้งแรกอย่างแน่นอน
- ทำ: บล็อกนี้ดำเนินการเป็นครั้งแรกและครั้งเดียวเมื่อการดำเนินการเริ่มต้น
- ในขณะที่: การดำเนินการของคำสั่ง 1 และคำสั่ง 2 ทั้งหมดขึ้นอยู่กับความสำเร็จของเงื่อนไข
ไวยากรณ์:
Do
{
Statement 1
Statement 2
….}while(condition){
Statement 3
Statement 4
…..
}ตัวอย่าง #1:
$j = 0
do
{
Write-Output $j // this block will execute first time
$j++
}while($j -lt 10)ตัวอย่าง #2:
ในตัวอย่างนี้ do block จะดำเนินการเป็นครั้งแรกแม้ว่าเงื่อนไขจะไม่เป็นจริงก็ตาม
$j = 0
do
{
Write-Output $j
$j--
}while($j -gt 0)
หน้าจอสำหรับทั้งสองโปรแกรมแสดงอยู่ด้านล่าง
3. ทำจนกระทั่ง
Do until แตกต่างจาก do while เล็กน้อย โดย do until การดำเนินการจะดำเนินต่อไปจนกระทั่งส่งกลับผลลัพธ์เชิงลบโดย “จนถึงบล็อก” มีสองสิ่งสำคัญที่นี่
- ทำ: บล็อกนี้จะดำเนินการต่อไปจนกว่าเงื่อนไขการบล็อกจะล้มเหลว ซึ่งหมายความว่าจนกว่าบล็อกจะส่งกลับค่าลบ
- จนถึง: ทำคำสั่งบล็อก 1 และคำสั่ง 2 ดำเนินการจนกว่าเงื่อนไขจะส่งกลับผลลัพธ์ที่เป็นลบ
ไวยากรณ์:
do
{
Statement 1
Statement 2
….
}until(condition)ตัวอย่าง:
$i = 0
do
{
Write-Output $i
$i++
}until($i -ge 5) //keep checking conditionในบล็อก “do until” เราจะเห็นว่าการดำเนินการของ do block จะดำเนินต่อไปจนกว่าเงื่อนไข “จนถึงบล็อก” จะส่งกลับค่าบวก
ด้านล่างเป็นหน้าจอสำหรับการเรียกใช้โค้ดด้านบน
4. สำหรับ
สำหรับคำสั่งให้รันรายการคำสั่งเป็นศูนย์หรือมากกว่านั้นตามการตั้งค่าเริ่มต้น ในไวยากรณ์ด้านล่างของ for loop มีสามส่วนที่สำคัญ
- ส่วนการเริ่มต้น: ในส่วนนี้ จะกำหนดค่าเริ่มต้นให้กับตัวแปรใดๆ ส่วนนี้จะทำงานหนึ่งครั้งเป็นครั้งแรก
- เงื่อนไข: ในส่วนเงื่อนไข เราจะเขียนเงื่อนไขของเราว่าลูปใดจะทำงาน ซึ่งหมายความว่าการดำเนินการของบล็อกคำสั่งจะขึ้นอยู่กับความสำเร็จของส่วนของเงื่อนไขเสมอ หากเงื่อนไขเป็นจริง บล็อกคำสั่งจะดำเนินการอย่างอื่นไม่ .
- การดำเนินการ: ในบล็อกนี้ เราสามารถเพิ่ม ลด หรือเปลี่ยนแปลงค่าของการเริ่มต้นตัวแปรหรือสิ่งใด ๆ ตามความต้องการของเรา
ไวยากรณ์:
for($initialisation; condition; operation)
{
Statement 1
Statement 2
….
}
ตัวอย่าง #1:
for($i = 0; $i -lt 3; $i++)
{
Write-Output $i
}หน้าจอเอาต์พุตของโค้ดด้านบน
หลายครั้งที่ for loop หนึ่งครั้งไม่เพียงพอที่จะตอบสนองความต้องการของเรา ดังนั้นเราจึงสามารถใช้ Nested for loops ได้ เราควรพยายามหลีกเลี่ยงการซ้อนลูปเนื่องจากความซับซ้อนของเวลาอาจสูงมากหากไม่ได้รับการจัดการอย่างเหมาะสม ด้านล่างนี้เป็นตัวอย่างของการซ้อน for loop
ตัวอย่าง #2:
for($j = 0; $j -lt 3; $j++)
{
$line = ''for($j = 0; $j -lt 3; $j++)
{
$line += $j.ToString() + $j.ToString() + ' '
}
Write-Output $line
}เอาต์พุต: 00 11 22
5. สำหรับแต่ละ
“Foreach” รันบล็อกคำสั่งติดต่อกันจนถึงรายการสุดท้ายของอาร์เรย์ สิ่งที่ดีเกี่ยวกับคำสั่ง forEach คือ เราไม่จำเป็นต้องเขียนโค้ดแยกใดๆ เพื่อแยกอาร์เรย์ของรายการ โดยทั่วไป "foreach" เป็นเวอร์ชันที่ได้รับการปรับปรุงประสิทธิภาพของลูป "for" ซึ่งให้รายการภายในของอาร์เรย์โดยไม่ต้องเขียนโปรแกรมใดๆ ที่นี่ เพียงตรวจสอบรายการในอาร์เรย์ที่เรากำลังเรียกใช้ลูป "foreach" หากมีรายการใดอยู่ที่นั่น จะดำเนินการบล็อกคำสั่ง 1 และคำสั่ง 2
ไวยากรณ์:
foreach($arrayItems)
{
Statement 1
Statement 2
…..
}ตัวอย่าง:
$numbers = 23,21,22,78
foreach($number in $numbers)
{
“$number is now =“ +$number
}หน้าจอด้านล่างแสดงการดำเนินการด้านบน
ประโยชน์ของลูปใน PowerShell
ประโยชน์ที่ใหญ่ที่สุดของการใช้ลูปคือ ช่วยลดการทำงานด้วยตนเองมากเกินไป และยังควบคุมข้อมูลขนาดใหญ่สำหรับกิจกรรมประเภทเดียวกันได้อีกด้วย สมมติว่าฉันต้องการให้คุณพิมพ์ 1 ถึง 1000000 และฉันบอกคุณว่าคุณสามารถเพิ่ม 1 ให้กับทุกๆ จำนวนที่หารด้วย 2 ลงตัว ซึ่งเป็นจำนวนคู่ ถ้าคุณเริ่มพิมพ์ทีละตัวและพยายามบวก 1 เข้ากับเลขคู่ทุกตัว มันจะใช้เวลานานเกินไป ดังนั้น วิธีที่ดีกว่าและง่ายกว่าที่คุณแนะนำคือการทำซ้ำขั้นตอนนี้โดยการเพิ่มหนึ่งเข้าไปในตัวเลขจนกระทั่งเราถึง 1000,000 ประโยชน์ที่ใหญ่ที่สุดที่เราได้รับจากการวนซ้ำคือเราใช้โค้ดชิ้นเดียวกันซ้ำ เราไม่จำเป็นต้องเขียน รหัสเดียวกันสำหรับข้อมูลมากมาย มันจะรันโค้ดโดยอัตโนมัติจนจบ
ด้านล่างนี้คือสิทธิประโยชน์บางประการ
- เพิ่มความสามารถในการนำโค้ดกลับมาใช้ใหม่ได้ ซึ่งทำให้โค้ดมีขนาดเล็กลง
- การคำนวณข้อมูลขนาดใหญ่ที่รวดเร็วยิ่งขึ้น ช่วยประหยัดแรงงานคนได้มาก
- ความซ้ำซ้อนของโค้ดมีน้อยลง
ตัวอย่างที่มีประโยชน์
คำถาม: พิมพ์ไม่เกิน 1,000
Without loop,
Write-Output 1;
Write-Output 2;
Write-Output 3;
Write-Output 4;
…so on
Till 100With loop,
$x=1..100
foreach($y in $x){
Write-Output $y;
}






