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


about_For

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

РАЗДЕЛ

about_For

КРАТКОЕ ОПИСАНИЕ

Содержит описание команды языка, которую можно использовать для выполнения операторов в зависимости от условия.

ПОДРОБНОЕ ОПИСАНИЕ

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

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

Синтаксис

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

          for (<init>; <condition>; <repeat>) 
          {<statement list>}

Заполнитель <init> представляет одну или несколько разделяемых запятыми команд, выполняемых перед началом цикла. Обычно элемент оператора <init> используется для создания переменной и присвоения ей начального значения. Обратите внимание на то, что синтаксис с запятой не работает с операторами присваивания, как в следующем примере:

          $ofs=",";$rs = "rs"; $cs = "cs"; for ($r = $rs, $c = $cs; $true;) 
          { "r is '$r' and c is '$c'"; break }

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

Заполнитель <condition> представляет часть оператора For, которая принимает логическое значение true или false. Windows PowerShell® вычисляет условие при каждом выполнении цикла For. Если результатом вычисления выражения является значение true, выполняется блок команд, а выражение вычисляется снова. Если условие по-прежнему имеет значение true, команды в списке операторов выполняются снова. Цикл повторяется, пока условие не примет значение false.

Заполнитель <repeat> представляет одну или несколько команд, разделенных запятыми, которые выполняются при каждом повторении цикла. Обычно это используется для изменения переменной, проверяемой внутри части <condition> оператора.

Заполнитель <statement list> представляет одну или несколько команд, выполняющихся при каждом входе в цикл или его повторении. Содержимое списка операторов заключается в фигурные скобки.

Примеры

Как минимум для оператора For необходимы круглые скобки, заключающие блок <init>, <condition> и <repeat>, а также заключенная в фигурные скобки команда в блоке <statement list>.

Обратите внимание, что в приведенных ниже примерах намеренно приводится код за пределами оператора 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>, как показано ниже.

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

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

Задав соответствующее условие (с помощью блока <condition> оператора For), можно завершить цикл For, когда условие примет значение false. В примере ниже цикл For выполняется, пока значение переменной $i меньше или равно 10.

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

Вместо создания и инициализации переменной за пределами оператора For то же самое можно сделать внутри цикла For с помощью блока <init>.

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

В качестве разделителя блоков <init>, <condition> и <repeat> оператора For вместо точки с запятой можно использовать знаки возврата каретки. В примере ниже показана эта альтернативная форма оператора For.

        
            for (<init>
          <condition>
          <repeat>){
          <statement list>
          }

Такая альтернативная форма оператора For используется в файлах сценариев Windows PowerShell и в командной строке Windows PowerShell. Но при вводе интерактивных команд в командной строке удобнее использовать синтаксис оператора For с точкой с запятой.

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

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

СМ. ТАКЖЕ

about_Comparison_Operators

about_Foreach