Функции в Windows PowerShell

В предыдущей статье мы говорили о командлетах в Windows PowerShell. Теперь поговорим о следующем типе команд — функциях.

Функции — это блоки кода на языке PowerShell, имеющие название и находящиеся в памяти до завершения текущего сеанса командной оболочки. Функции в PowerShell это не совсем то же самое, что функции в языках программирования.

Создадим простейшую функцию Primer, которая просто выводит сообщение. Для этого введем в PowerShell

Function Primer{"Это пример функции."}

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

Windows PowerShell, функции

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

Изменим нашу функцию Primer, добавив в неё переменную $Args.

Function Primer{"Это пример $Args."}

Тогда при вызове функции нам необходимо будет прописать аргумент или аргументы. Внимательно посмотрите на скриншот ниже.

Windows PowerShell, функции
Пример функции с аргументами в PowerShell

В данном случае «функции», «с» и «аргументами» — три элемента массива $Args. Как видим, они выводятся через пробел. Для того, чтобы убедиться, что это именно три отдельных элемента, введем разделитель в виде точки с помощью специальной переменной $OFS.

Function Primer{
>> $OFS="."
>> "Это пример $Args."}
>>

 Смотрим результат.

Windows PowerShell, функции
Использование переменной $OFS

Второй способ обработки аргументов функций в Windows PowerShell это использование формальных параметров. Формальные параметры указываются в круглых скобках после имени функции.

Продолжим наш пример с выводом сообщения. Снова изменим функцию Primer, приведя её к следующему виду

Function Primer ($a, $b, $c) {"Это пример $a $b $c."}

Результат будет тем же самым.

Windows PowerShell, функции
Использование формальных параметров

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

Создадим функцию Summa, которая складывала бы значения двух аргументов.

Function Summa ($a, $b) {$a+$b}

Windows PowerShell, функции

Мы можем задать значения параметров сразу. Если все значения уже заданы, функции не нужны дополнительные аргументы. Мы также вольны называть параметры по собственному усмотрению.

Видоизменим функцию Summa.

Function Summa ($chislo1=15,$chislo2=20) {$chislo1+$chislo2}

Windows PowerShell, функции

Мы обозначили параметры как $chislo1 и $chislo2, задав им значения соответственно 15 и 20. Поскольку значения всех параметров здесь указаны, аргументы нам не нужны. Но, если мы всё-таки запустим эту функцию с дополнительным аргументом, то он заменит собой значение $chislo1, а $chislo2 останется без изменений.

Windows PowerShell, функции

PowerShell также позволяет указывать тип параметра функции. Например, тип [int] это целые числа, [string] — текст, а [boolean] — логический тип данных.

Вот следующий пример.

Windows PowerShell, функции
Использование типов данных в Windows PowerShell

Как видим, в результате деления $a на $b должно было получиться 1,15. Но, поскольку мы указали интерпретатору воспринимать все параметры функции как целые числа, дробные значения были округлены до целых. Обратите внимание на округления, которые представлены ниже.

Windows PowerShell, функции

Они не совсем соответствуют тем законам математики, к которым мы привыкли.

Среди типов параметров есть так называемые «параметры-переключатели» обозначающиеся типом [Switch]. Их смысл состоит в логическом выборе, а сами параметры могут принимать только значения $True или $False.

Создадим функцию с таким переключателем.

Function Vybor ([Switch] $a) {
>> if ($a) {
>> "Это первый вариант."
>> }
>> else { "Это второй вариант."
>> }
>> }
>>

В данном случае, если мы запустим функцию Vybor с параметром -a (аналогично, как мы запускали dir с параметрами -recurse и -filter в прошлой статье), то нам выйдет одно сообщение, а если без параметра, то другое.

Windows PowerShell, функции
Использование переключателя Switch в Windows PowerShell

На этом с функциями пока всё. Далее мы продолжим изучать типы команд в Windows PowerShell.

Добавить комментарий

Ваш адрес email не будет опубликован.