항목
    about_Switch

간단한 설명
    스위치를 사용하여 여러 if 문을 처리하는 방법에 대해 설명합니다.

자세한 설명
    if 문을 사용하여 스크립트 또는 프로그램에서 결정을 내릴 수 있습니다. 기본적으로 "이 조건이 존재하면 이 
    작업을 수행하십시오. 그렇지 않으면 다른 작업을 수행하십시오."라고 요구할 것입니다. 이 작업은 원하는 
    횟수만큼 수행할 수 있지만 조건 목록이 긴 경우에는 if 문을 사용하기가 힘들어집니다. 긴 조건 목록을 switch 
    문으로 결합할 수 있습니다. 모든 분기 문에서처럼 스크립트 블록은 중괄호({})로 묶어야 합니다.

    switch 문은 사실상 일련의 if 문으로, 식을 사례별로 각 조건에 일치시킵니다. 일치하는 항목이 
    발견되면 해당 조건과 연관된 작업이 수행됩니다. 기본 switch 문의 형식은 다음과 같습니다.

        PS> $a = 3
        PS> switch ($a) {
            1 {"It is one."}
            2 {"It is two."}
            3 {"It is three."}
            4 {"It is four."}
            }
        
        It is three.


    간단한 이 예제에서는 값을 구한 다음 목록의 각 조건과 비교합니다. 여기서는 일치하는 항목의 문자열을 
    표시하는 작업만 수행됩니다. 그러나 모든 조건을 확인할 경우 문제가 발생할 수 있습니다. 예를 들면 
    다음과 같습니다.

        PS> $day = "day5"
        PS> switch ($day){
            day1 {"Monday"; break}
            day2 {"Tuesday"; break}
            day3 {"Wednesday"; break}
            day4 {"Thursday"; break}
            day5 {"Friday"; break}
            day6 {"Saturday"; break}
            day7 {"Sunday"; break}
            day5 {"Too many days"; break}
            }
        
        Friday


    목록에는 day5 조건이 두 개 있습니다. 그러나 각 조건 끝에 있는 break가 찾기를 중지하고 찾은 작업을 
    수행하도록 switch에 지시합니다. break 문이 이 위치에 없었다면 day5 작업이 둘 다 수행될 것입니다. 

    전환할 값이 배열이면 요소 0에서 시작하여 배열의 각 요소가 순서대로 평가됩니다. 적어도 하나의 조건을 
    만족하는 요소가 하나 이상 있어야 합니다. 그렇지 않으면 오류가 발생합니다. 기본 절이 두 개 이상인 
    경우에도 오류가 발생합니다.

    전체 switch 구문은 다음과 같습니다.

        switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline ) 
    또는

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

    위 구문 뒤에 다음 구문이 옵니다.

        { 
            "string"|number|variable|{ expression } { statementlist } 
            default { statementlist } 
        }

    
    사용하는 매개 변수가 없을 경우 스위치는 기본적으로 대/소문자 구분 없는 완전한 일치가 적용되는 것처럼 
    작동합니다. "파이프라인"에 따라 배열이 생성된 경우 배열의 각 요소는 오프셋 기준으로 오름차순(0에서 
    시작)으로 평가됩니다.  

    스위치 코드 블록에는 조건 요소가 하나 이상 있어야 하며 기본 절은 하나만 있을 수 있습니다. 기본 절이 두 
    개 이상인 경우 ParseException이 throw됩니다.

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

        Regex	        일치하는 절이 문자열인 경우 정규식 문자열로 처리됨을 나타냅니다. 이 매개 
        		변수를 사용하면 Wildcard 및 Exact를 사용할 수 없습니다. 일치하는 절이 문자열이 
			아닌 경우 이 매개 변수는 무시됩니다.

        Wildcard	일치하는 절이 문자열인 경우 와일드카드 문자열로 처리됨을 나타냅니다. 이 매개 변수를 
        		사용하면 Regex 및 Exact를 사용할 수 없습니다. 일치하는 절이 문자열이 아닌 경우 이 매개 
			변수는 무시됩니다.

        Exact	        일치하는 절이 문자열인 경우 정확하게 일치해야 함을 나타냅니다. 이 매개 변수를 사용하면 
        		Wildcard 및 Regex를 사용할 수 없습니다. 일치하는 절이 문자열이 아닌 경우 이 매개 변수는 
			무시됩니다.

        CaseSensitive	일치하는 절이 문자열인 경우 대/소문자를 구분하도록 수정합니다. 일치하는 절이 문자열이 
        		아닌 경우 이 매개 변수는 무시됩니다.

        File	        문 대신 파일(또는 담당자)의 입력을 사용합니다. File 매개 변수가 여러 개 사용된 경우 
        		마지막 매개 변수가 사용됩니다. 파일의 각 줄을 읽고 스위치 블록을 통해 전달합니다.

    Regex, Wildcard 또는 Exact를 여러 번 사용할 수 있지만 마지막으로 사용된 매개 변수만 동작을 제어합니다.

    Break 키워드는 더 이상 처리가 발생하지 않고 switch 문이 종료됨을 나타냅니다. 

    Continue 키워드는 현재 토큰에 대한 처리가 중단되고 조건문의 다음 토큰이 평가됨을 나타냅니다. 사용 
    가능한 토큰이 없으면 switch 문이 종료됩니다.

    "{ expression }" 블록은 비교 시 평가되는 코드 블록일 수 있습니다. 현재 개체는 자동 변수 $_에 
    바인딩되며 식을 평가하는 동안 사용할 수 있습니다. 이 식이 "True"로 평가되면 비교가 일치하는 것으로 
    간주됩니다. 이 식은 새 범위에서 평가됩니다.

    switch 문의 "Default" 키워드는 일치하는 항목을 찾을 수 없는 경우 키워드 다음에 오는 코드 블록이 
    평가됨을 나타냅니다. 복합 목록의 닫는 중괄호( } )는 명시적 break이기 때문에 프로그램 흐름은 블록 간에 
    허용되지 않습니다. 

    일치하는 항목이 여러 개 발견된 경우 일치하는 항목마다 식이 실행됩니다. 이 문제를 방지하기 위해 Break 
    또는 Continue 키워드를 사용하여 추가 비교를 중지할 수 있습니다.


참고 항목
    about_Break
    about_Continue
    about_If
    about_Script_Blocks




목차