about_Break

업데이트 날짜: 2014년 12월

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

여기에 소개를 삽입합니다.

항목

about_Break

간단한 설명

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

자세한 설명

Break 문이 Foreach, For, Switch 또는 While 등의 루프에 나타나면 Break 문은 Windows PowerShell이 루프를 즉시 종료하도록 합니다. 반복하지 않는 Switch 구문에서 Break는 Windows PowerShell이 Switch 코드 블록을 종료하도록 합니다.

Break 문은 포함된 루프를 끝낼 수 있도록 하는 레이블을 포함할 수 있습니다. 레이블은 Foreach, For 또는 While과 같은 루프 키워드를 스크립트에 지정할 수 있습니다. 레이블을 사용하면 Break는 지정된 루프를 종료합니다. Break는 Break 문이 있는 루프에 관계없이 지정된 루프를 종료합니다.

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

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

@@이 예제에서 Break 문은 $i 변수가 1일 때 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 루프를 중단하는 것과 같은 방식으로 다른 반복 문을 중단합니다. 다음 예제에서 Break 문은 Trap 문을 사용하여 DivideByZeroException 예외가 포착될 때 While 문을 종료합니다.

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

Break 문에는 레이블이 포함될 수 있습니다. 레이블이 있는 Break 키워드를 사용하는 경우 Windows PowerShell은 현재 루프를 종료하는 대신 레이블이 지정된 루프를 종료합니다. 레이블에 대한 구문은 다음과 같습니다(이 예제에서는 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   # A statement inside the For-loop
            }
        }
        $a = $c  # A statement after the labeled While-loop

조건 2가 True로 평가될 경우 스크립트를 실행하면 레이블이 지정된 루프 다음의 문으로 건너뜁니다. 예제에서 "$a = $c" 문을 지정하면 실행이 다시 시작됩니다.

다음 도식 예제에 나온 것처럼 레이블이 지정된 여러 루프를 중첩할 수 있습니다.

        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # After innermost loop
            }
                # After \"yellow\" loop
        }
                # After \"red\" loop

$b 변수가 True로 평가되면 "red" 레이블이 지정된 루프 다음에 스크립트 실행이 다시 시작됩니다. $c 변수가 True로 평가되면 "yellow" 레이블이 지정된 루프 다음에 스크립트 실행이 다시 시작됩니다.

$ 변수가 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_Operato

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While