Die Unterschiede zwischen einer do-while-, do-until- und while-Schleife zu verstehen, kann verwirrend sein. Ist es das Gleiche? Warum dann zwei verschiedene Techniken?
In diesem Blogbeitrag werde ich die Unterschiede aufzeigen. Aber zuerst müssen wir einen Blick auf die Grundlagen werfen.
Do-Until
Do-Until-Schleifen tun etwas, bis eine Bedingung wahr wird.
Beachte die Gleichheitsbedingung für diese Schleife $number -eq ‚0‘.
Der folgende Code wird zum Beispiel ausgeführt, bis du 0 auf deiner Tastatur drückst. Dann und nur dann wird die Bedingung wahr (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Do-While-Schleifen tun etwas, während eine Bedingung wahr ist.
Beachte die nicht gleiche Bedingung für diese Schleife $number -ne ‚0‘.
Der unten stehende Code wird ausgeführt, bis Sie 0 auf Ihrer Tastatur drücken, mit anderen Worten, das Skript wird so lange ausgeführt, wie (während) die Bedingung nicht wahr (0) wird.
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
While-Schleifen sind ähnlich wie Do-While-Schleifen. Aber diese Art von Schleife führt die Prüfung zuerst durch, während die Do-While-Schleife die Prüfung nach dem ersten Durchlauf durchführt.
Beim vorletzten Durchlauf ist $i 9, also wird der letzte Durchlauf durchgeführt, aber dann nicht mehr.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. While
. Do-While vs. While
Das folgende Beispiel zeigt die Unterschiede, die auf den ersten Blick nicht signifikant sind, aber sie sind es.
Die erste Schleife wird nur einmal ausgeführt, weil sie nur ausgeführt wird, solange $i größer als 10 ist. Dies ist nicht der Fall. Deshalb hört die Schleife nach dem ersten Durchlauf auf, wenn die Prüfung abgeschlossen ist.
Die zweite Schleife wird endlos laufen, weil $i nie größer als 10 wird und deshalb die Aussage wahr ist.
$i = 10do {Write-Output 'This is executed once.'}while ($i -gt 10)do {Write-Output 'This is done over and over again!'}until ($i -gt 10)
Zu guter Letzt die while-Schleife ohne do-Anweisung. Diese Schleife wird nie laufen, da die Prüfung vor dem Start der Schleife durchgeführt wird.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
Ich hoffe, ich konnte etwas Licht ins Dunkel bringen, wenn es um Schleifen mit der do-Anweisung geht.
Bis zum nächsten Mal mit PowerShell!