PowerShell
Оператор switch
Поиск…
Вступление
Оператор switch позволяет проверять переменную для равенства по отношению к списку значений. Каждое значение называется случаем , а переменная, включенная, проверяется для каждого случая коммутатора. Это позволяет вам писать сценарий, который может выбирать из серии опций, но не требует, чтобы вы писали длинную серию утверждений if.
замечания
В этом разделе документируется оператор switch, используемый для ветвления потока скрипта. Не путайте его с параметрами переключателя, которые используются в функциях в виде логических флагов.
Простой коммутатор
Операторы switch сравнивают одно тестовое значение с несколькими условиями и выполняют любые связанные действия для успешных сравнений. Это может привести к нескольким совпадениям / действиям.
Учитывая следующий переключатель ...
switch($myValue)
{
'First Condition' { 'First Action' }
'Second Condition' { 'Second Action' }
}
'First Action'
будет выводиться, если $myValue
задано как 'First Condition'
.
'Section Action'
будет выводиться, если $myValue
задано как 'Second Condition'
.
Ничего не будет $myValue
если $myValue
не соответствует ни условиям.
Заявление о переключении с параметром Regex
Параметр -Regex
позволяет операторам операторов выполнять регулярное выражение, сопоставляющее условия.
Пример:
switch -Regex ('Condition')
{
'Con\D+ion' {'One or more non-digits'}
'Conditio*$' {'Zero or more "o"'}
'C.ndition' {'Any single char.'}
'^C\w+ition$' {'Anchors and one or more word chars.'}
'Test' {'No match'}
}
Выход:
One or more non-digits
Any single char.
Anchors and one or more word chars.
Простой коммутатор с перерывом
Ключевое слово break
может использоваться в операторах switch для выхода из инструкции перед оценкой всех условий.
Пример:
switch('Condition')
{
'Condition'
{
'First Action'
}
'Condition'
{
'Second Action'
break
}
'Condition'
{
'Third Action'
}
}
Выход:
First Action
Second Action
Из-за ключевого слова break
во втором действии третье условие не оценивается.
Заявление переключателя с параметром подстановочного знака
Параметр -Wildcard
позволяет операторам-переключателям выполнять подстановочные знаки, соответствующие условиям.
Пример:
switch -Wildcard ('Condition')
{
'Condition' {'Normal match'}
'Condit*' {'Zero or more wildcard chars.'}
'C[aoc]ndit[f-l]on' {'Range and set of chars.'}
'C?ndition' {'Single char. wildcard'}
'Test*' {'No match'}
}
Выход:
Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard
Заявление о выводе с точным параметром
Параметр -Exact
обеспечивает выполнение операторов switch для выполнения точного, нечувствительного к регистру сопоставления с строковыми условиями.
Пример:
switch -Exact ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
'^*ondition$' {'Fourth Action'}
'Conditio*' {'Fifth Action'}
}
Выход:
First Action
Second Action
Third Action
Выполняются первые-третье действия, потому что соответствующие им условия соответствуют входу. Строки регулярных выражений и подстановочных знаков в четвертом и пятом состояниях не совпадают.
Обратите внимание, что четвертое условие также будет соответствовать входной строке, если выполняется сопоставление регулярных выражений, но в этом случае игнорируется, потому что это не так.
Заявление о переключении с параметром CaseSensitive
Параметр -CaseSensitive
вводит операторы switch для выполнения точного, -CaseSensitive
регистр соответствия условий.
Пример:
switch -CaseSensitive ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
}
Выход:
Second Action
Второе действие - единственное действие, выполняемое, потому что оно является единственным условием, которое точно соответствует строке 'Condition'
при учете чувствительности к регистру.
Выписка переключателя с параметром файла
Параметр -file
позволяет оператору switch получать входные данные из файла. Каждая строка файла оценивается оператором switch.
Пример файла input.txt
:
condition
test
Пример оператора switch:
switch -file input.txt
{
'condition' {'First Action'}
'test' {'Second Action'}
'fail' {'Third Action'}
}
Выход:
First Action
Second Action
Простой коммутатор с условием по умолчанию
Ключевое слово Default
используется для выполнения действия, когда никакие другие условия не соответствуют входному значению.
Пример:
switch('Condition')
{
'Skip Condition'
{
'First Action'
}
'Skip This Condition Too'
{
'Second Action'
}
Default
{
'Default Action'
}
}
Выход:
Default Action
Заявление о выводе с выражениями
Условиями могут быть также выражения:
$myInput = 0
switch($myInput) {
# because the result of the expression, 4,
# does not equal our input this block should not be run.
(2+2) { 'True. 2 +2 = 4' }
# because the result of the expression, 0,
# does equal our input this block should be run.
(2-2) { 'True. 2-2 = 0' }
# because our input is greater than -1 and is less than 1
# the expression evaluates to true and the block should be run.
{ $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}
#Output
True. 2-2 = 0
True. Value is 0