다음을 통해 공유


계속에 대하여

간단한 설명

continue 문이 프로그램 루프의 맨 위, switch 문, 또는 trap 문으로 프로그램 흐름을 즉시 반환하는 방법을 설명합니다.

긴 설명

continue 문은 현재 제어 블록을 종료하지만 완전히 종료하지 않고 실행을 계속하는 방법을 제공합니다. 이 문구는 레이블을 지원합니다. 레이블은 스크립트에서 문에 부여하는 이름입니다.

루프에서 `continue` 사용하기

레이블이 지정되지 않은 continue 문은 for, foreach, do또는 while 문으로 제어되는 가장 안쪽 루프의 맨 위로 프로그램 흐름을 즉시 반환합니다. 루프의 현재 반복이 종료되고 루프는 다음 반복으로 계속됩니다.

다음 예제에서는 while 변수가 5인 경우 프로그램 흐름이 $ctr 루프의 맨 위로 돌아갑니다. 따라서 5를 제외하고 1에서 10 사이의 모든 숫자가 표시됩니다.

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

for 루프를 사용하는 경우 <Repeat> 문과 <Condition> 테스트에서 실행이 계속됩니다. 아래 예제에서는 $i 키워드 이후에 continue 감소하므로 무한 루프가 발생하지 않습니다.

#   <Init>  <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
    Write-Host -Object $i
    if ($i -eq 5)
    {
        continue
        # Will not result in an infinite loop.
        $i--
    }
}

루프에서 레이블이 지정된 continue 문 사용

레이블이 지정된 continue 문은 반복 실행을 종료하고 대상 바깥쪽 반복 또는 switch 문 레이블로 컨트롤을 전송합니다.

다음 예제에서는 for$condition일 때 가장 안쪽 이 종료되고, 반복은 for의 두 번째 labelB 루프로 계속됩니다.

:labelA for ($i = 1; $i -le 10; $i++) {
    :labelB for ($j = 1; $j -le 10; $j++) {
        :labelC for ($k = 1; $k -le 10; $k++) {
            if ($condition) {
                continue labelB
            } else {
                $condition = Update-Condition
            }
        }
    }
}

switch 문에서 continue 사용

continue 내의 레이블이 지정되지 않은 switch 문은 현재 switch 반복의 실행을 종료하고 switch 맨 위로 컨트롤을 전송하여 다음 입력 항목을 가져옵니다.

단일 입력 항목이 있는 경우 continue 전체 switch 문을 종료합니다. switch 입력이 컬렉션이면 switch 컬렉션의 각 요소를 테스트합니다. continue 현재 반복을 종료하고 switch 다음 요소로 계속됩니다.

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

트랩 문에서 continue 사용

본문에서 실행된 최종 문이 trap 문이 continue경우 트랩된 오류는 자동으로 무시되고 실행은 trap 발생시킨 문 바로 다음 문으로 계속됩니다.

루프, 스위치 또는 트랩 외부에서 continue를 사용하지 마세요.

이 이를 직접 지원하는 구문(루프, , )이 아닌 외부에서 사용될 때, PowerShell은 바깥쪽 구문을 찾기 위해 호출 스택 을 검색합니다. 포함하는 구문을 찾을 수 없는 경우, 현재 runspace는 아무런 알림 없이 종료됩니다.

즉, 이를 지원하는 감싸는 구문 외부에서 continue를 실수로 사용하는 함수와 스크립트는 호출자를 실수로 종료시킬 수 있습니다.

continue 스크립트 블록과 같은 파이프라인 내에서 ForEach-Object 사용하면 파이프라인을 종료할 뿐만 아니라 전체 Runspace가 종료될 수 있습니다.

참고하십시오