about_Switch

업데이트 날짜: 2012년 11월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0

항목

about_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 문은 값 4의 조건에서 Break 문으로 종료됩니다.

         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 문에는 하나 이상의 조건문이 포함되어야 합니다.

Default 절은 값이 조건과 일치할 때 트리거됩니다. 이 절은 If 문의 Else 절과 같습니다. 각 Switch 문에서 Default 절은 하나만 허용됩니다.

스위치에는 다음 매개 변수가 있습니다.

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 키워드는 현재 값 및 후속 값의 처리를 계속합니다.

조건이 식 또는 스크립트 블록이면 조건은 값에 비교되기 바로 전에 평가됩니다. 값은 $_ automatic 변수에 할당되고 식에서 사용할 수 있습니다. 식이 true이거나 값이 일치하면 일치에 성공합니다. 식은 자체 범위에서 평가됩니다.

"Default" 키워드는 다른 조건이 값과 일치하지 않을 때만 평가되는 조건을 지정합니다.

각 조건에 대한 작업은 다른 조건의 작업과 독립적입니다. 작업의 닫는 중괄호( } )는 명시적 중단입니다.

참고 항목

about_Break

about_Continue

about_If

about_Script_Blocks