Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Управляющие конструкции PowerShell




1.11.1. Условная конструкция If …ElseIf … Else

В общем случае синтаксис инструкции If имеет вид:

If (условие1)

{блок_кода1}

[ElseIf (условие2)]

{блок_кода2}]

[Else

{блок_кода3}]

При выполнении конструкции If проверяется истинность условного выражения условие1. Если условие1 имеет значение $True, то выполняется блок_кода1, после чего выполнение конструкции if завершается. Если условие1 имеет значение $False, проверяется истинность условного выражения условие2. Если условие2имеет значение $True, то выполняется блок_кода2 и выполнение конструкции if завершается. Если и условие1, и условие2 имеют значение $False, то выполняется блок_кода3 и выполнение конструкции if завершается.

Примериспользования конструкции if в интерактивном режиме работы (рис. 36):

 

Рис. 36. Примериспользования конструкции if

 

В примере сначала переменной $a присваивается значение 10:

$a=10

Затем значение переменной $a сравнивается с числом 15:

If ($a –eq 15)

Результатом является строка

Значение $a не равно 15

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

 

1.11.2. Циклы While и Do … While

Самый простой из циклов PS – цикл While, в котором команды выполняются до тех пор, пока проверяемое условие имеет значение $True. Цикл While имеет следующий синтаксис:

While (условие) {блок_команд}

Цикл DoWhile похож на цикл While, однако условие в нем проверяется не до блока команд, а после:

Do {блок_команд} While (условие)

Пример использования цикла DoWhile(рис. 37):

 

Рис. 37. Пример использования цикла DoWhile

 

Цикл For

Обычно цикл For применяется для операций с массивами при выполнении определенных действий с каждым из его элементов. Синтаксис конструкции For:

For (инициация; условие; повторение) {блок_команд}.

Пример использования цикла For(рис. 38):

 

Рис. 38. Пример использования цикла For

Цикл ForEach

Инструкция ForEach позволяет последовательно перебирать элементы коллекций (последовательностей). Самый простой тип коллекции – массив. Особенность цикла ForEachсостоит в том, что его синтаксис и выполнение зависят от того, где расположена конструкция ForEach: вне конвейера команд или внутри конвейера.

Если конструкция ForEach расположена вне конвейера команд, то в этом случае синтаксис цикла ForEach имеет вид:

ForEach ($элемент in $коллекция) {блок_команд}

При выполнении цикла ForEach автоматически создается переменная $элемент. Перед каждой итерацией цикла этой переменной присваивается значение очередного элемента в коллекции. В разделе блок_команд содержатся команды, выполняемые для каждого элемента коллекции. Приведенный ниже цикл ForEach отображает значения элементов массива $lettArr (рис. 39):

 

Рис. 39. Использование цикла ForEachвне конвейера команд

 

Конструкция ForEach может также использоваться совместно с командлетами, возвращающими коллекции элементов, например:

$ln = 0; ForEach ($f in Dir *.txt) {$ln +=$f.length}

В примере создается и обнуляется переменная $ln, затем в цикле ForEach с помощью командлета dir формируется коллекция файлов с расширением txt, находящихся в текущем каталоге. Конструкция ForEach перебирает все элементы этой коллекции и на каждом шаге к текущему файлу выполняется обращение с помощью переменной $f. В блоке команд цикла ForEach к текущему значению переменной $ln добавляется значение свойства Length (размер файла) переменной $f. В результате выполнения цикла в переменной $ln будет получен суммарный размер файлов в текущем каталоге, которые имеют расширение txt.

Если конструкция ForEach используется внутри конвейера команд, то PS использует псевдоним ForEach, соответствующий командлету ForEach-Object. В этом случае фактически выполняется командлет ForEach-Object и не требуется часть конструкции ($элемент in $коллекция), так как в блоке команд обрабатываются элементы коллекции, которые предоставляет предыдущая команда конвейера.

Синтаксис конструкции ForEach при использовании внутри конвейера команд имеет вид:

команда | ForEach {блок_команд}

Рассмотренный выше пример подсчета суммарного размера файлов из текущего каталога для данного варианта конструкции ForEach примет следующий вид:

$ln = 0; dir *.txt | ForEach{ $ln +=$_.Length}

В приведенном примере специальная переменная $_ используется для обращения к текущему объекту конвейера и извлечения его свойств.










Последнее изменение этой страницы: 2018-06-01; просмотров: 319.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...