about_For

Краткое описание

Описывает команду языка, используемую для выполнения инструкций на основе условного теста.

Подробное описание

Оператор For (также известный как For цикл) — это конструкция языка, которую можно использовать для создания цикла, выполняющего команды в блоке команд, в то время как указанное условие вычисляется $true.

Обычное For использование цикла заключается в итерации массива значений и работе с подмножеством этих значений. В большинстве случаев, если требуется выполнить итерацию всех значений в массиве, рекомендуется использовать инструкцию Foreach .

Синтаксис

Ниже показан синтаксис инструкции For .

for (<Init>; <Condition>; <Repeat>)
{
    <Statement list>
}

Заполнитель Init представляет одну или несколько команд, выполняемых перед началом цикла. Обычно используется часть инструкции Init для создания и инициализации переменной с начальным значением.

Затем эта переменная будет основой для проверки условия в следующей части инструкции For .

Заполнитель условия представляет часть инструкцииFor, разрешающей$true$falseлогическое значение. PowerShell оценивает условие при For каждом запуске цикла. Если оператор имеет значение $true, команды в выполнении блока команд и инструкция вычисляется снова. Если условие по-прежнему$true, команды в списке инструкций выполняются снова. Цикл повторяется до тех пор, пока условие не станет $false.

Заполнитель "Повторять " представляет одну или несколько команд, разделенных запятыми, которые выполняются при каждом повторе цикла. Как правило, это используется для изменения переменной, тестируемой внутри части инструкции Condition .

Заполнитель списка инструкций представляет набор одной или нескольких команд, выполняемых каждый раз при вводе или повторе цикла. Содержимое списка инструкций окружено фигурными скобками.

Поддержка нескольких операций

Следующие синтаксисы поддерживаются для нескольких операций назначения в инструкции Init :

# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
    "`$i:$i"
    "`$j:$j"
}

Следующие синтаксисы поддерживаются для нескольких операций назначения в инструкции Repeat :

# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
    "`$i:$i"
    "`$j:$j"
}

# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
    "`$i:$i"
    "`$j:$j"
}

# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
    "`$i:$i"
    "`$j:$j"
}

Примечание.

Операции, отличные от предварительных или постовых добавок, могут не работать со всеми синтаксисами.

Для нескольких условий используются логические операторы, как показано в следующем примере.

for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
    "`$i:$i"
    "`$j:$j"
}

Дополнительные сведения см. в about_Logical_Operators.

Примеры

Как минимум, For оператор требует круглых скобок вокруг инструкции Init, Condition и Repeat части инструкции и команды, окруженной фигурными скобками в списке инструкций.

Обратите внимание, что предстоящие примеры намеренно показывают код за пределами инструкции For . В последующих примерах код интегрируется в инструкцию For .

Например, следующая For инструкция постоянно отображает значение переменной $i до тех пор, пока вы не будете вручную выйти из команды, нажав клавиши CTRL+C.

$i = 1
for (;;)
{
    Write-Host $i
}

Дополнительные команды можно добавить в список инструкций, чтобы значение $i увеличивается на 1 при каждом запуске цикла, как показано в следующем примере.

for (;;)
{
    $i++; Write-Host $i
}

Пока команда не завершится, нажав клавиши CTRL+C, эта инструкция будет постоянно отображать значение переменной $i , так как она увеличивается на 1 при каждом запуске цикла.

Вместо того чтобы изменить значение переменной в списке инструкций, For можно использовать часть инструкции Repeat , For как показано ниже.

$i=1
for (;;$i++)
{
    Write-Host $i
}

Эта инструкция по-прежнему будет повторяться неограниченно до тех пор, пока не завершите выполнение команды, нажав клавиши CTRL+C.

Вы можете завершить For цикл с помощью условия. Условие можно поместить с помощью части условия инструкцииFor. Цикл For завершается, когда условие вычисляется $false.

В следующем примере цикл выполняется в For то время как значение $i меньше или равно 10.

$i=1
for(;$i -le 10;$i++)
{
    Write-Host $i
}

Вместо создания и инициализации переменной за пределами For инструкции эту задачу можно выполнить внутри For цикла с помощью части инструкции For Init.

for($i=1; $i -le 10; $i++){Write-Host $i}

Вы можете использовать возвращаемую каретки вместо запятой для разделителя инструкции For Init, Condition и Repeat. В следующем примере показано, что используется этот альтернативный For синтаксис.

for ($i = 0
  $i -lt 10
  $i++){
  $i
}

Эта альтернативная форма инструкции работает в файлах For скриптов PowerShell и в командной строке PowerShell. Однако при вводе интерактивных команд в командной строке проще использовать For синтаксис инструкции с запятой.

Цикл For является более гибким, чем Foreach цикл, так как позволяет увеличивать значения в массиве или коллекции с помощью шаблонов. В следующем примере $i переменная увеличивается на 2 в части For инструкции Repeat.

for ($i = 0; $i -le 20; $i += 2)
{
    Write-Host $i
}

Цикл For также можно записать в одной строке, как показано в следующем примере.

for ($i = 0; $i -lt 10; $i++) { Write-Host $i }

См. также