간단한 설명
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를 사용하지 마세요.
즉, 이를 지원하는 감싸는 구문 외부에서 continue를 실수로 사용하는 함수와 스크립트는 호출자를 실수로 종료시킬 수 있습니다.
continue 스크립트 블록과 같은 파이프라인 내에서 ForEach-Object 사용하면 파이프라인을 종료할 뿐만 아니라 전체 Runspace가 종료될 수 있습니다.