PowerShell
Instrukcja zamiany
Szukaj…
Wprowadzenie
Instrukcja switch umożliwia testowanie zmiennej pod kątem równości z listą wartości. Każda wartość nazywana jest sprawą , a włączana zmienna jest sprawdzana dla każdej sprawy przełączającej. Umożliwia napisanie skryptu, który może wybierać spośród szeregu opcji, ale bez konieczności pisania długiej serii instrukcji if.
Uwagi
W tym temacie opisano dokumentację instrukcji switch służącą do rozgałęzienia przepływu skryptu. Nie należy mylić go z parametrami przełącznika, które są używane w funkcjach jako flagi boolowskie.
Prosty przełącznik
Instrukcje przełączające porównują pojedynczą wartość testową z wieloma warunkami i wykonują wszelkie powiązane działania w celu pomyślnego porównania. Może to spowodować wiele dopasowań / akcji.
Biorąc pod uwagę następujący przełącznik ...
switch($myValue)
{
'First Condition' { 'First Action' }
'Second Condition' { 'Second Action' }
}
'First Action'
zostanie $myValue
jeśli $myValue
jest ustawiona jako 'First Condition'
.
'Section Action'
zostanie $myValue
jeśli $myValue
jest ustawione jako 'Second Condition'
.
Nic nie zostanie wyświetlone, jeśli $myValue
nie $myValue
żadnego z warunków.
Instrukcja Switch z parametrem Regex
Parametr -Regex
pozwala instrukcjom switch wykonywać dopasowanie wyrażeń regularnych do warunków.
Przykład:
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'}
}
Wynik:
One or more non-digits
Any single char.
Anchors and one or more word chars.
Prosty przełącznik z przerwą
break
kluczowego break
można użyć w instrukcjach switch, aby wyjść z instrukcji przed oceną wszystkich warunków.
Przykład:
switch('Condition')
{
'Condition'
{
'First Action'
}
'Condition'
{
'Second Action'
break
}
'Condition'
{
'Third Action'
}
}
Wynik:
First Action
Second Action
Ze względu na słowo kluczowe break
w drugiej akcji trzeci warunek nie jest oceniany.
Instrukcja Switch z parametrem Wildcard
Parametr -Wildcard
pozwala instrukcjom przełączników wykonywać dopasowanie symboli wieloznacznych do warunków.
Przykład:
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'}
}
Wynik:
Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard
Instrukcja Switch z dokładnym parametrem
Parametr -Exact
wymusza instrukcje przełącznika, aby wykonać dokładne dopasowanie bez rozróżniania wielkości liter względem warunków łańcuchowych.
Przykład:
switch -Exact ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
'^*ondition$' {'Fourth Action'}
'Conditio*' {'Fifth Action'}
}
Wynik:
First Action
Second Action
Third Action
Akcje od pierwszego do trzeciego są wykonywane, ponieważ związane z nimi warunki pasują do danych wejściowych. Ciągi wyrażeń regularnych i symboli zastępczych w czwartym i piątym stanie nie są zgodne.
Zauważ, że czwarty warunek pasowałby również do łańcucha wejściowego, gdyby przeprowadzono dopasowanie wyrażeń regularnych, ale w tym przypadku został zignorowany, ponieważ tak nie jest.
Instrukcja Switch z parametrem CaseSensitive
Parametr -CaseSensitive
wymusza instrukcje przełącznika, aby dokładnie dopasować -CaseSensitive
liter do warunków.
Przykład:
switch -CaseSensitive ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
}
Wynik:
Second Action
Druga akcja jest jedyną wykonaną akcją, ponieważ jest to jedyny warunek, który dokładnie pasuje do ciągu 'Condition'
przy uwzględnianiu wielkości liter.
Instrukcja Switch z parametrem pliku
Parametr -file
umożliwia instrukcji switch otrzymanie danych wejściowych z pliku. Każda linia pliku jest oceniana przez instrukcję switch.
Przykładowy plik input.txt
:
condition
test
Przykładowa instrukcja przełączania:
switch -file input.txt
{
'condition' {'First Action'}
'test' {'Second Action'}
'fail' {'Third Action'}
}
Wynik:
First Action
Second Action
Prosty przełącznik z domyślnym warunkiem
Default
słowo kluczowe służy do wykonania akcji, gdy żadne inne warunki nie odpowiadają wartości wejściowej.
Przykład:
switch('Condition')
{
'Skip Condition'
{
'First Action'
}
'Skip This Condition Too'
{
'Second Action'
}
Default
{
'Default Action'
}
}
Wynik:
Default Action
Instrukcja Switch z wyrażeniami
Warunki mogą być również wyrażeniami:
$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