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 }