Поделиться через


about_For

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

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

Длинное описание

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

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

Синтаксис

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

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

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

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

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

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

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

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

Следующие синтаксисы поддерживаются для нескольких операций назначения в инструкции 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, условияи повторять часть инструкции и команду, окруженную скобками в списке инструкций части инструкции.

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

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

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

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

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

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

Вместо изменения значения переменной в списке инструкций For можно использовать повторять часть инструкции 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 с помощью Init части инструкции For.

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

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

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

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

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

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

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

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

См. также