Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0
РАЗДЕЛ
about_Switch
КРАТКОЕ ОПИСАНИЕ
Содержит описание использования оператора Switch для обработки нескольких операторов If.
ПОДРОБНОЕ ОПИСАНИЕ
Для проверки условия в сценарии или функции используется оператор If. Оператор If может проверять условия различных типов, включая значения переменных и свойств объектов.
Для проверки нескольких условий используйте оператор Switch. Оператор Switch равносилен последовательности операторов If, но он проще в использовании. В операторе Switch перечисляются все условия и дополнительное действие. Если условие выполняется, действие совершается.
Базовый оператор Switch имеет следующий формат:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Например, приведенный ниже оператор Switch сопоставляет проверяемое значение 3 с каждым из условий. Если проверяемое значение соответствует условию, выполняется действие.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
В этом простом примере значение сравнивается с каждым условием в списке даже при наличии совпадения со значением 3. В приведенном ниже операторе Switch имеются два условия для значения 3. Этот пример показывает, что по умолчанию проверяются все условия.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Чтобы оператор Switch прекратил сравнение после нахождения совпадения, используйте оператор Break. Оператор Break завершает выполнение оператора Switch.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Если проверяемое значение является коллекцией, например массивом, все элементы коллекции проверяются в порядке их следования. В примерах ниже проверяется значение 4, а затем значение 2.
PS> switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Операторы Break применяются к коллекции, а не к каждому значению, как показано в примере ниже. Оператор Switch прерывается оператором Break при проверке условия для значения 4.
PS> switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
СИНТАКСИС
Полный синтаксис оператора Switch следующий:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
или
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
с последующим
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Если не использовать никакие параметры, оператор Switch ищет точное совпадение без учета регистра. Если значение является коллекцией, все элементы проверяются в порядке их следования.
Оператор Switch должен включать по крайней мере один оператор условия.
Предложение по умолчанию запускается, если значение не соответствует ни одному из условий. Это эквивалентно предложению Else в операторе If. В каждом операторе Switch разрешается только одно предложение по умолчанию.
Оператор Switch имеет следующие параметры:
Regex
Выполняет сопоставление значения с условием на основе регулярного выражения. При использовании параметра Regex параметры Wildcard и Exact игнорируются. Кроме того, этот параметр игнорируется, если удовлетворяющее критерию предложение не является строкой.
Example:
PS> switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
3 {"Three again."; Break}
"fo*" {"That's too many."}
}
PS> switch -Regex ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
3 {"Three again."; Break}
"fo*" {"That's too many."}
}
That's too many.
Wildcard
Указывает, что условие является строкой с подстановочными знаками. При использовании параметра Wildcard параметры Regex и Exact игнорируются. Кроме того, этот параметр игнорируется, если удовлетворяющее критерию предложение не является строкой.
Exact
Указывает, что сопоставляемое предложение, являющееся строкой, должно точно соответствовать критерию. При использовании параметра Exact параметры Regex, Wildcard и Exact игнорируются. Кроме того, этот параметр игнорируется, если удовлетворяющее критерию предложение не является строкой.
CaseSensitive
Выполняется сопоставление с учетом регистра. Этот параметр игнорируется, если удовлетворяющее критерию предложение не является строкой.
Файл
Входные данные берутся из файла, а не из оператора со значением. При наличии нескольких параметров File используется только последний. Каждая строка файла считывается и обрабатывается оператором Switch.
Допускается многократное использование параметров Regex, Wildcard или Exact. Однако силу имеет только последний использованный параметр.
Если значение соответствует нескольким условиям, выполняется действие для каждого условия. Чтобы изменить это поведение, используйте ключевые слова Break или Continue.
Ключевое слово Break означает, что обработка больше не выполняется и оператор Switch завершает работу.
Ключевое слово Continue указывает на то, что обработка текущего и последующих значений продолжается.
Если условие является выражением или блоком сценария, оно вычисляется перед сравнением со значением. Значение присваивается автоматической переменной $_ и доступно в выражении. Сопоставление считается успешным, если выражение имеет значение true или совпадает со значением. Выражение вычисляется в собственной области.
Ключевое слово Default определяет условие, которое проверяется только в том случае, если остальные условия не соответствуют значению.
Действие каждого условия не зависит от действий других условий. Закрывающая фигурная скобка (}) в действии является явным остановом.
СМ. ТАКЖЕ
about_Break
about_Continue
about_If
about_Script_Blocks