PowerShell에서 Foreach 객체에서 나가는 방법
-
PowerShell에서
ForEach-Object종료를 위한break조건 사용 -
PowerShell에서
ForEach-Object종료를 위한if와break사용 -
PowerShell에서
ForEach-Object종료를 위한if와return사용 -
PowerShell에서
ForEach-Object종료를 위한if와continue사용 - 결론
ForEach-Object cmdlet는 사용자가 컬렉션을 반복하고 입력 객체 컬렉션의 각 항목에 대해 작업할 수 있도록 허용합니다. ForEach-Object에서 입력 객체는 cmdlet으로 파이프되거나 -InputObject 매개변수를 사용하여 지정됩니다.
PowerShell에서 ForEach-Object 명령을 구성하는 두 가지 방법이 있습니다: 스크립트 블록과 작업 문. ForEach-Object cmdlet은 각 입력 객체의 스크립트 블록이나 작업 문을 실행합니다.
작업을 지정하기 위해 스크립트 블록을 사용합니다. $_ 변수는 스크립트 블록 내에서 현재 입력 객체를 나타내는 데 사용됩니다.
스크립트 블록은 모든 PowerShell 스크립트를 포함할 수 있습니다. 예를 들어, 다음 명령은 컴퓨터에 설치된 각 cmdlet의 Name 속성, 함수 및 aliases의 값을 가져옵니다.
Get-Command | ForEach-Object { $_.Name }
ForEach-Object 명령을 구성하는 또 다른 방법은 작업 문을 사용하는 것입니다. 작업 문으로 속성 값을 지정하거나 메서드를 호출할 수 있습니다.
Get-Command | ForEach-Object Name
때때로, ForEach-Object에서 종료하고 싶을 때가 있지만, 이는 ForEach 문과는 다르게 작동합니다. ForEach-Object에서는 각 객체가 생성되는 즉시 문이 실행됩니다.
ForEach 문에서는 루프가 실행되기 전에 모든 객체가 수집됩니다. ForEach-Object는 실제 루프가 아닌 cmdlet입니다.
루프를 종료하기 위해 break 또는 continue를 사용할 때, 전체 스크립트가 종료되며 그 뒤의 문을 건너뛰지 않습니다. 그러나 PowerShell에서 특정 조건을 사용하여 ForEach-Object 객체에서 종료할 수 있습니다.
PowerShell에서 ForEach-Object 종료를 위한 break 조건 사용
PowerShell에서 foreach-object 루프는 컬렉션이나 파이프라인의 각 항목을 반복하는 데 일반적으로 사용됩니다. 때때로, 특정 조건에 따라 이 루프를 조기에 종료할 필요가 있습니다.
break 문은 특정 조건이 충족될 때 루프를 즉시 종료하는 간단한 방법을 제공합니다.
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
이 코드 조각에서는 숫자를 나타내는 문자열을 포함하는 배열 $numbers를 초기화합니다. 또한 $Break를 처음에 $False로 설정합니다.
foreach-object 루프 내에서, $Break 변수를 기반으로 항목을 필터링하기 위해 Where-Object를 사용합니다. $Break가 $False이면 루프가 계속되고, 그렇지 않으면 멈춥니다.
루프 안에서 현재 항목이 three와 같은지 확인합니다. 만약 그렇다면, $Break를 $True로 설정하여 루프를 종료하게 됩니다.
출력:

PowerShell에서 ForEach-Object 종료를 위한 if와 break 사용
때때로, 특정 조건에 따라 이 루프를 조기에 종료할 필요가 있습니다. if 방법은 루프 내에서 조건을 평가하고 조건이 충족될 때 종료를 트리거하는 간단한 접근 방식을 제공합니다.
이 방법에서는 ForEach-Object에서 종료하기 위해 객체의 컬렉션에 빈 값을 사용해야 합니다. 예를 들어, if 조건을 사용하여 ForEach-Object에서 종료할 수 있습니다.
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
제공된 코드 조각에서는 숫자를 나타내는 문자열을 포함하는 배열 $numbers를 초기화합니다. foreach-object 루프 내에서 배열의 각 항목을 반복합니다.
if 문을 사용하여 현재 항목 $_이 빈 문자열인지 확인합니다. 조건이 참으로 평가되면, break를 사용하여 루프에서 즉시 종료합니다.
그렇지 않으면 루프가 계속되고, 현재 숫자를 Write-Host를 사용하여 출력합니다.
출력:

PowerShell에서 ForEach-Object 종료를 위한 if와 return 사용
PowerShell의 foreach-object 루프에서 특정 조건에 따라 조기에 종료하려면 if와 return 방법의 조합을 사용할 수 있습니다. 이 방법은 특정 조건이 충족될 때 루프 실행을 중단하고 호출자에게 제어권을 반환해야 할 때 특히 유용합니다.
루프 내에서 if 문을 사용하여 루프 종료 조건을 평가합니다. 조건이 참으로 평가되면, return 문이 실행되어 루프 실행이 즉시 종료되고 제어권이 호출자에게 반환됩니다.
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
제공된 코드 조각에서는 숫자를 나타내는 문자열을 포함하는 배열 $numbers를 초기화합니다. foreach-object 루프 내에서 배열의 각 항목을 반복합니다.
if 문을 사용하여 현재 항목 $_이 three와 같은지 확인합니다. 조건이 참으로 평가되면, return을 사용하여 루프에서 즉시 종료합니다.
그렇지 않으면 루프가 계속되고, 현재 숫자를 Write-Host를 사용하여 출력합니다.
출력:

PowerShell에서 ForEach-Object 종료를 위한 if와 continue 사용
PowerShell에서 continue 문은 루프의 현재 반복의 나머지를 건너뛰고 다음 반복으로 진행하는 데 사용됩니다. 주로 특정 반복을 건너뛰기 위해 루프에서 사용되지만, foreach-object 루프 내에서 루프 종료 형식을 구현하는 데도 사용할 수 있습니다.
루프 내에서 continue 문을 전략적으로 배치하고 조건부 논리를 통합함으로써 특정 조건에 따라 루프의 조기 종료를 달성할 수 있습니다.
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
제공된 코드 예제에서는 1에서 10까지의 숫자를 포함하는 배열 $numbers를 초기화합니다. foreach-object 루프 내에서 배열의 각 숫자를 반복합니다.
if 문을 사용하여 현재 숫자가 5와 같은지 확인합니다. 조건이 참으로 평가되면, continue 문이 실행되어 현재 반복을 건너뛰고 다음으로 진행하게 됩니다.
이로 인해 지정된 조건이 충족될 때 루프가 조기에 종료됩니다.
출력:

결론
요약하자면, PowerShell의 ForEach-Object cmdlet은 컬렉션을 반복하며 각 항목에 대해 개별적으로 작업할 수 있도록 합니다. 우리는 ForEach-Object 루프에서 조기에 종료하는 다양한 방법을 탐구했습니다. break, return, continue 사용을 포함하여.
break와 continue는 루프 내에서 직접적인 흐름 제어를 제공하고, return은 루프에서 종료하고 호출자로 돌아가는 대체 방법을 제공합니다. 각 방법은 고유한 사용 사례와 이점을 가지고 있어 스크립트 실행의 유연성을 제공합니다.
앞으로 사용자들은 이러한 방법을 다양한 시나리오에서 실험함으로써 이해를 더욱 깊게 하고 그 뉘앙스를 탐구하며 PowerShell 스크립팅에서의 적용을 마스터할 수 있습니다.
