Как цикл PowerShell for может запускать команду несколько раз

Цикл For — один из самых ценных инструментов любого языка программирования(valuable tools in any programming language) , и  Microsoft PowerShell — не исключение. Вы можете использовать другие циклы для повторения команд, но цикл For, пожалуй, самый простой.

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

Для чего используются (Use)циклы(Loops) For в PowerShell ?

В отличие от командной строки(Command Prompt) , PowerShell — это полноценная среда для написания сценариев. Это означает, что вы можете писать многоразовые сценарии PowerShell(PowerShell scripts) для автоматического выполнения задач, а не вводить команды вручную. И циклы For являются ключом к написанию этих модулей.

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

Вы можете генерировать последовательности чисел, определять простое число или отображать таймер обратного отсчета. На практике вы можете перебирать массив объектов, выполняя какое-либо действие с каждой записью.

Синтаксис цикла(Loop) for в PowerShell _(Syntax)

Циклы for работают в Windows PowerShell так же, как и в любом языке программирования. Выражения, инициализирующие отслеживаемую переменную, проверяющие ее значение и изменяющие переменную, заключены в скобки, следующие за «For», разделенные точкой с запятой. Затем идет сам список операторов, заключенный в фигурные скобки.

Для ( инициализация(Initialization) ; условие(Condition) ; обновление(Update) )

{

    Блок сценария(Script Block)

}

Как использовать цикл(Loop) For в скрипте PowerShell(PowerShell Script)

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

Допустим, вам нужно написать фрагмент кода, который может найти сумму всех натуральных чисел до числа n , содержащегося в переменной $n. Вот базовый пример цикла For:

$п = 10

$сумма = 0

Для ($i = 1; $i -le $n; $i++)

{

    $сумма = $сумма + $я

}

«Сумма $n натуральных чисел равна $sum»

Доступ к массивам через цикл for

Генерация числовых последовательностей вряд ли является тем, для чего большинство людей используют PowerShell . Более распространенное использование — перебор массива.

Скажем(Say) , у вас есть массив $week с семью элементами. Вы можете вывести список дней, содержащихся в массиве, с помощью простого цикла For, как показано в следующем примере.

Для ($i = 0; $i -lt $week.Length; $i++)

{

    $ неделя [$ я]

}

Использование цикла ForEach(ForEach Loop) для быстрого прохода(Quickly Iterate) по массиву

Другой формой цикла For является оператор ForEach . Эта версия упрощает просмотр содержимого массива PowerShell и его обработку по отдельности. (PowerShell)Предыдущий фрагмент кода, например, можно переписать так:

Foreach ($день в $неделе)

{

    $день

}

При работе с более сложными объектами вы также можете использовать командлет Foreach-Object для выполнения действия над содержимым любой команды PowerShell .

Чем цикл for отличается(Loop Different) от других типов(Types) циклов ?(Loops)

Цикл For — не единственный доступный вам тип оператора цикла. Как и в большинстве языков программирования, в PowerShell есть несколько типов циклов.

Пока

Самый простой из них — цикл While. Все, что у вас есть, — это условие и блок сценария, и цикл выполняется до тех пор, пока тестовое выражение оценивается как истинное. Поскольку сначала вычисляется выражение, есть шанс, что код вообще не запустится или превратится в бесконечный цикл. 

Пока ( Условие(Condition) )

{

    Блок сценария(Script Block)

}

Делать пока

Если вы пишете сценарий, который необходимо запустить хотя бы один раз, даже если выражение оценивается как ложное, вы можете использовать цикл Do-While . Единственное отличие от цикла While заключается в том, что он помещает блок команд перед условием, что означает, что код выполняется до того, как проверочное выражение будет проверено в первый раз.

Делать {

    Блок сценария(Script block)

}

Пока ( Условие(Condition) )

До

Другая версия этого цикла — Do-Until . По сути(Basically) , он запускает блок кода, а затем повторяет его до тех пор, пока тестовое выражение не станет истинным — обратный цикл Do-While . Не особенно полезная структура, поскольку вы можете добиться того же, изменив условие в стандартном цикле Do-While .

Делать {

    Блок сценария(Script Block)

}

Пока ( Условие(Condition) )

Почему цикл For лучше

Проблема со всеми этими другими циклическими структурами заключается в том, что они не включают в себя операторы начального значения или обновления. Вы должны вручную не забыть создать переменную вне цикла, а затем увеличивать ее (или уменьшать) во время каждого прохода цикла.

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

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

Когда следует использовать цикл(Loop) for в PowerShell ?

PowerShell — это создание скриптов для автоматизации. И, вероятно, наиболее полезным инструментом для достижения этого является цикл For. Вы можете использовать его для замены многих операций копирования и вставки более компактным и элегантным сценарием.

Наиболее распространенная функция этого цикла — перебор массива по одному элементу за раз. Для еще более оптимизированного сценария вы также можете использовать цикл ForEach . Вы также можете использовать цикл For для генерации числовых последовательностей, хотя это редко требуется.

Цикл For превосходит другие алгоритмы циклов, так как включает все основные функции цикла в параметры, предотвращая любые ошибки из-за забывания этих операторов. Это делает цикл For незаменимым в любом сценарии, требующем повторения набора команд.



About the author

Я веб-разработчик с опытом работы в Firefox и Google Docs. У меня есть степень в области делового администрирования Университета Флориды. Мои навыки включают в себя: разработку веб-сайтов, систему управления контентом (CMS), анализ данных и дизайн пользовательского интерфейса. Я опытный консультант, который может помочь вашей команде создавать эффективные веб-сайты и приложения.



Related posts