다음을 통해 공유


about_Break

항목
    about_Break

간단한 설명
    Foreach, For, While, Do 또는 Switch 문을 즉시 종료하는 데 사용할 수 있는 문에 대해 설명합니다.


자세한 설명
    Foreach, For, Switch 또는 While 루프 등의 루프에 Break 문이 나타나면 루프가 즉시 
    종료됩니다. 루핑 즉, 반복하지 않는 Switch 구문에 Break를 사용하면Switch 코드 블록이 종료됩니다.
 
 
    Break 문에는 포함된 루프를 종료할 수 있는 레이블이 있을 수 있습니다. 레이블은 스크립트에 Foreach, For, 
    While등의 모든 루프 키워드를 지정할 수 있습니다. 레이블을 사용하면 지정된 루프가 Break에 의해 
    종료됩니다. 이때 Break 문이 어느 루프에 있는지에 관계없이 지정된 루프가 종료됩니다.


    다음 예에서는 Break 문을 사용하여 For 문을 종료하는 방법을 보여 줍니다.


        for($i=1; $i -le 10; $i++)
        {
            Write-Host $i
            break
        }


    이 예에서는 $i 변수가 1일 때 Break 문이 For 루프를 종료합니다. $i가 10보다 커질 때까지 For 문이 
    True로 평가되더라도 Windows PowerShell은 For 루프가 처음 실행될 때 Break 문에 도달합니다. 

    내부 조건이 충족되어야 하는 루프에 Break 문을 사용하는 것이 더 일반적입니다. 다음 Foreach 문의 예를 
    살펴보십시오.


        $i=0
        $varB = 10,20,30,40
        foreach ($val in $varB)
        {  
            $i++
            if ($val -eq 30)
            {
                break
            }  
        }
        Write-Host "30 was found in array position $i"


    이 예에서 Foreach 문은 $varB 배열을 반복합니다. 코드 블록이 실행될 때마다 $i 변수가 1씩 증가합니다. 
    처음 두 번 루프가 실행될 때 If 문은 False로 평가됩니다. 세 번째로 루프가 실행될 때 $i는 3이고 $val 
    변수는 30입니다. 이 시점에서 Break 문이 실행되고 Foreach 루프가 종료됩니다.


    다른 루프 문도 Foreach 루프를 종료할 때와 동일한 방법으로 종료합니다. 다음 예에서는 Trap 문을 
    사용하여 DivideByZeroException 예외가 트래핑될 때 Break 문이 While 문을 종료합니다.


        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "divide by zero trapped" 
                break
            }
            1 / $i--
        }


    Break 문은 레이블을 포함할 수 있습니다. 레이블과 함께 Break 키워드를 사용하면 현재 루프가 종료되는 
    대신 레이블이 지정된 루프가 종료됩니다. 레이블 구문은 다음과 같습니다. 이 예에서는 While 루프에서 
    레이블을 보여 줍니다.


        :myLabel while (<condition>) { <statement list>}


    레이블은 콜론과 사용자가 지정하는 이름으로 구성됩니다. 레이블은 문에서 첫 번째 토큰이어야 하며 그 
    다음에 While 등의 루프 키워드가 와야 합니다.
 

    Windows PowerShell에서는 Foreach, For, While 등의 루프 키워드에만 레이블이 있을 수 있습니다.


    Break는 레이블이 지정된 루프 밖으로 실행을 이동합니다. 포함된 루프에서는 Break 키워드를 단독으로 
    사용할 때와 다른 결과가 나타납니다. 이 스키마 예에는 For 문과 함께 While 문이 있습니다.
 

        :myLabel while (<condition 1>) 
        {
            for ($item in $items) 
            { 
                if (<condition 2>) { break myLabel } 
                $item = $x   # For-루프 내의 문
            }
        }
        $a = $c # 지정된 While-루프 뒤의 문


    condition 2가 True로 평가되면 스크립트 실행은 레이블이 지정된 루프 뒤의 문으로 건너뜁니다. 이 
    예에서는 "$a = $c" 문에서 실행이 다시 시작됩니다. 


    다음 스키마 예와 같이 레이블이 지정된 루프를 많이 중첩시킬 수 있습니다.


        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # 가장 안쪽의 루프 뒤
            }
                # \\"yellow\\" 루프 뒤
        }
                # \\"red\\" 루프 뒤


    $b 변수가 True로 평가되면 "red"라는 레이블이 지정된 루프 뒤에서 스크립트 실행이 다시 시작되고, $c 
    변수가 True로 평가되면 "yellow"라는 레이블이 지정된 루프 뒤에서 스크립트 컨트롤 실행이 다시 
    시작됩니다.


    $a 변수가 True로 평가되면 가장 안쪽 루프 뒤에서 실행이 다시 시작됩니다. 레이블은 필요 없습니다.


    Windows PowerShell에서는 레이블이 실행을 다시 시작할 수 있는 범위를 제한하지 않습니다. 레이블은 
    스크립트 및 함수 호출 경계를 넘어서 컨트롤을 전달할 수도 있습니다.


    Break 키워드는 Switch 구문을 종료하는 데 사용됩니다. 예를 들어, 다음 Switch 문은 Break 문을 사용하여 
    한정된 조건을 테스트합니다.


        $var = "word2"
        switch -regex ($var) 
        {
            "word2" 
            {
                Write-Host "Exact" $_ 
                break
            } 

            "word.*" 
            { 
                Write-Host "Match on the prefix" $_ break
            }

            "w.*"
            {
                Write-Host "Match on at least the first letter" $_ 
            break 
            }
            
            default
            {
                Write-Host "No match" $_
                break
            }
        }


    이 예에서는 $var 변수를 만들어 "word2"의 문자열 값으로 초기화합니다. Switch 문은 먼저 Regex 클래스를 
    사용하여 변수 값을 "word2"라는 용어와 일치시킵니다. Regex 클래스는 정규식 Microsoft .NET Framework 
    클래스입니다. 변수 값과 switch 문의 첫 번째 테스트가 일치하므로 switch 문의 첫 번째 코드 블록이 
    실행됩니다.


    Windows PowerShell이 첫 번째 Break 문에 도달하면 Switch 문은 종료됩니다. 예에서 4개의 
    Break 문을 제거하면 4가지 조건이 모두 충족됩니다. 이 예에서는 한정된 조건이 충족될 때 break 문을 
    사용하여 결과를 표시합니다. 


참고 항목  
    about_Comparison_Operators
    about_For
    about_Foreach 
    about_Switch
    about_While