Ich habe folgende Powershell-Schleife:Powershell - der Suche nach Äquivalent von Perl Redo
Set-Variable -Name YELLOW -Option ReadOnly -Value 0
Set-Variable -Name ORANGE -Option ReadOnly -Value 1
Set-Variable -Name RED -Option ReadOnly -Value 2
While ($true) {
for ($color = $YELLOW; $color -le $RED; $color++) {
$LastWriteTime = ((Get-Item $FilePath).LastWriteTime)
$waitTime = (Get-Date).AddMinutes(-($WarningTimeArray[$color]))
$SleepTime = ($LastWriteTime - $waitTime).TotalSeconds
If ($SleepTime -gt 0) {
$WarningFlagArray[$color] = $false;
SendMail ("Start-Sleep -Seconds" + $SleepTime)
Start-Sleep -Seconds $SleepTime
Continue #Actually want a "redo"
}
ElseIf (-not $WarningFlagArray[$color]) {
SendMail $WarningMessageArray[$color]
$WarningFlagArray[$color] = $true
}
}
}
Wenn Powershell trifft die „Weiter“, geht es weiter nach oben der for
Schleife und geht zum nächsten Farbe.
In Perl, Sie haben last
(äquivalent zu Powershell break
) und Sie haben next
(äquivalent zu Powershell continue
). Sie haben auch die redo
, die an den Anfang der Schleife zurückgeht, aber den for
Schleifenzähler nicht erhöht.
Gibt es einen entsprechenden Powershell-Befehl für die redo
-Funktion von Perl für die for
-Schleife?
Ich kann die Anweisung in eine while
Schleife leicht umwandeln, um dieses spezielle Problem zu umgehen, aber ich fragte mich, ob es etwas wie redo
irgendwie gibt.
AFAIK, die meisten Sprachen haben kein Äquivalent "Redo". – kirilloid
@kirilloid Ich weiß, aber es ist schön in Fällen wie diesem. Changed es in eine 'while' Schleife. Das erste Mal, dass ich PowerShell benutzt habe. –