다음을 통해 공유


about_Continue

간단한 설명

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

자세한 설명

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

루프에서 계속 사용

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

다음 예제에서는 변수가 5와 같으면 $ctr 프로그램 흐름이 루프의 while 맨 위로 돌아갑니다. 따라서 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 반복 실행을 종료하고 대상 바깥쪽 반복 또는 switch 문 레이블로 컨트롤을 전송합니다.

다음 예제에서는 True이면 가장 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 (루프, switch, trap) PowerShell 은 바깥쪽 구문에 대한 호출 스택 을 조회합니다. 바깥쪽 구문을 찾을 수 없는 경우 현재 Runspace는 조용히 종료됩니다.

즉, 해당 함수 및 스크립트를 지원하는 바깥쪽 구문의 외부를 실수로 사용하는 continue 함수와 스크립트는 실수로 호출자를 종료할 수 있습니다.

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

참고 항목