Я пытаюсь создать цикл for, который заканчивается после выполнения 1 из 2 условий.
Я не знаю, чего мне не хватает, но с «-или» между этими двумя условиями кажется, что «работает» только одно условие. Должен ли следующий цикл for не завершаться после того, как значение $i равно 3??
Вот код:
$test = "test"
$expected = "successful"
for($i = 0; ($i -lt 3) -or ($test -ne $expected); ($i++) -and (sleep 1)){
if ($i -eq 5){
$test = $expected
}
$test
$i
}
и вот мой вывод:
контрольная работа 0 контрольная работа 1 контрольная работа 2 контрольная работа 3 контрольная работа 4 успешный 5
@MathiasR.Jessen спасибо, теперь работает !!! Понятия не имею, что творилось у меня в голове....
Should the following for-loop not also quit after the value of
$i
is 3?
Почему? ($test -ne $expected)
по-прежнему $true
, и вы указали PowerShell продолжать цикл до тех пор, пока либо($i -lt 3)
или ($test -ne $expected)
верны.
Измените условие цикла, чтобы использовать вместо него оператор -and
:
for($i = 0; ($i -lt 3) -and ($test -ne $expected); ($i++) -and (sleep 1))
Предполагая, что вы хотите, чтобы оператор sleep 1
выполнялся независимо от значения $i
, измените последнюю часть на нет, также используйте -and
:
for($i = 0; ($i -lt 3) -and ($test -ne $expected); ($i++;sleep 1)){
Я думаю, что для второго примера понадобится $(..)
: $($i++;sleep 1)
-or
заставляет цикл продолжаться до тех пор, пока выполняется условие либо, измените-or
на-and
.