수색…


소개

switch 문을 사용하면 변수 목록에 대해 동등 함을 테스트 할 수 있습니다. 각 값을 대 / 소문자 라고하며, 켜져 있는 변수는 각 대문자로 확인됩니다. 일련의 옵션 중에서 선택할 수 있지만 긴 일련의 if 문을 작성하지 않고도 스크립트를 작성할 수 있습니다.

비고

이 항목에서는 스크립트의 흐름을 분기하는 데 사용되는 switch 문에 대해 설명합니다. 부울 플래그로 함수에 사용되는 스위치 매개 변수 와 혼동하지 마십시오.

간단한 스위치

switch 문은 단일 테스트 값을 여러 조건과 비교하고 성공적인 비교를 위해 연관된 작업을 수행합니다. 여러 개의 일치 / 작업이 발생할 수 있습니다.

주어진 다음 스위치를 ...

switch($myValue)
{
    'First Condition'    { 'First Action' }
    'Second Condition'   { 'Second Action' }
}

$myValue'First Condition' 으로 설정되면 'First Action' 이 출력됩니다.

$myValue'Second Condition' 으로 설정되면 'Section Action' 이 출력됩니다.

$myValue 가 두 조건 중 하나와 일치하지 않으면 아무 것도 출력되지 않습니다.

정규식 매개 변수 사용하여 문 전환

-Regex 매개 변수를 사용하면 switch 문이 조건에 대해 정규 표현식 일치를 수행 할 수 있습니다.

예:

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.

브레이크가있는 간단한 스위치

switch 키워드에서 break 키워드를 사용하여 모든 조건을 평가하기 전에 명령문을 종료 할 수 있습니다.

예:

switch('Condition')
{
  'Condition'
  {
    'First Action'
  }
  'Condition'
  {
    'Second Action'
    break
  }
  'Condition'
  {
    'Third Action'
  }
}

산출:

First Action
Second Action

두 번째 조치에서 break 키워드로 인해 세 번째 조건은 평가되지 않습니다.

와일드 카드 매개 변수가있는 스위치 문

-Wildcard 매개 변수를 사용하면 switch 문에서 조건에 대해 와일드 카드 일치를 수행 할 수 있습니다.

예:

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 매개 변수를 사용하여 Switch 문

-CaseSensitive 매개 변수는 조건에 대해 대소 문자를 정확하게 일치시키는 switch 문을 시행합니다.

예:

switch -CaseSensitive ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
}

산출:

Second Action

두 번째 작업은 대 / 소문자를 구분할 때 'Condition' 문자열과 정확히 일치하는 유일한 조건이기 때문에 실행되는 유일한 작업입니다.

파일 매개 변수로 명령문 전환

-file 매개 변수는 switch 문이 파일로부터 입력을 수신 할 수있게합니다. 파일의 각 행은 switch 문에 의해 평가됩니다.

예제 파일 input.txt :

condition
test

스위치 문 예 :

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow