Share via


about_Operator_Precedence

간단한 설명

PowerShell 연산자를 우선 순위로 나열합니다.

자세한 설명

PowerShell 연산자를 사용하면 단순하지만 강력한 식을 생성할 수 있습니다. 이 항목에서는 연산자를 우선 순위로 나열합니다. 우선 순위는 여러 연산자가 동일한 식에 나타날 때 PowerShell이 연산자를 평가하는 순서입니다.

연산자의 우선 순위가 같으면 PowerShell은 식 내에 나타날 때 왼쪽에서 오른쪽으로 평가합니다. 예외는 할당 연산자, 캐스트 연산자 및 부정 연산자(!, -not, -bnot)이며 오른쪽에서 왼쪽으로 평가됩니다.

괄호와 같은 엔클로저를 사용하여 표준 우선 순위 순서를 재정의하고 PowerShell이 닫지 않은 부분보다 먼저 식의 묶인 부분을 평가하도록 강제할 수 있습니다.

다음 목록에서 연산자는 계산 순서대로 나열됩니다. 동일한 줄 또는 동일한 그룹의 연산자는 동일한 우선 순위를 갖습니다.

연산자 열에는 연산자가 나열됩니다. 참조 열에는 연산자가 설명된 PowerShell 도움말 항목이 나열됩니다. 토픽을 표시하려면 .를 입력합니다 get-help <topic-name>.

연산자 참조
$() @() () @{} about_Operators
. ?. (멤버 액세스) about_Operators
:: (정적) about_Operators
[0] ?[0] (인덱스 연산자) about_Operators
[int] (캐스트 연산자) about_Operators
-split (단항) about_Split
-join (단항) about_Join
, (쉼표 연산자) about_Operators
++ -- about_Assignment_Operators
! -not about_Logical_Operators
.. (range 연산자) about_Operators
-f (format 연산자) about_Operators
- (단항/음수) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

다음 연산자 그룹은 동일한 우선 순위를 갖습니다. 대/소문자를 구분하고 명시적으로 대/소문자를 구분하지 않는 변형의 우선 순위는 동일합니다.

연산자 참조
-split(이진) about_Split
-join(이진) about_Join
-is -isnot -as about_Type_Operators
-eq -ne -gt -ge -lt -le about_Comparison_Operators
-like -notlike about_Comparison_Operators
-match -notmatch about_Comparison_Operators
-in -notIn about_Comparison_Operators
-contains -notContains about_Comparison_Operators
-replace about_Comparison_Operators

목록은 다음 연산자를 우선 순위로 사용하여 여기에서 다시 시작됩니다.

연산자 참조
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor about_Logical_Operators

다음 항목은 true 연산자가 아닙니다. 식 구문이 아니라 PowerShell 명령 구문의 일부입니다. 할당은 항상 발생하는 마지막 작업입니다.

구문 참조
. (점 원본) about_Operators
& (호출) about_Operators
? <if-true> : <if-false> (Ternary 연산자) about_Operators
?? (null-coalese 연산자) about_Operators
| (파이프라인 연산자) about_Operators
> >> 2> 2>> 2>&1 about_Redirection
&& || (파이프라인 체인 연산자) about_Operators
= += -= *= /= %= ??= about_Assignment_Operators

예제

다음 두 명령은 산술 연산자와 괄호를 사용하여 PowerShell이 식의 묶인 부분을 먼저 평가하도록 하는 효과를 보여 줍니다.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

다음 예제에서는 로컬 디렉터리에서 읽기 전용 텍스트 파일을 가져오고 변수에 $read_only 저장합니다.

$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}

다음 예제와 동일합니다.

$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )

파이프라인 연산자(|)가 할당 연산자()=보다 우선 순위가 높기 때문에 cmdlet이 Get-ChildItem 가져오는 파일은 변수에 할당되기 전에 필터링을 위해 cmdlet으로 $read_only 전송 Where-Object 됩니다.

다음 예제에서는 인덱스 연산자가 캐스트 연산자보다 우선하는 것을 보여 줍니다.

이 식은 세 개의 문자열 배열을 만듭니다. 그런 다음 값이 0인 인덱스 연산자를 사용하여 배열에서 첫 번째 문자열인 첫 번째 개체를 선택합니다. 마지막으로 선택한 개체를 문자열로 캐스팅합니다. 이 경우 캐스트는 영향을 주지 않습니다.

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

이 식은 괄호를 사용하여 인덱스 선택 전에 캐스트 작업을 강제로 수행합니다. 결과적으로 전체 배열은 (단일) 문자열로 캐스팅됩니다. 그런 다음 인덱스 연산자는 문자열 배열의 첫 번째 항목(첫 번째 문자)을 선택합니다.

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

다음 예제에서는 (보다 큼) 연산자가 (논리 AND) 연산자보다 -and 우선 순위가 높기 때문에 -gt 식의 결과는 FALSE입니다.

PS> 2 -gt 4 -and 1
False

다음 식과 동일합니다.

PS> (2 -gt 4) -and 1
False

-및 연산자의 우선 순위가 더 높은 경우 대답은 TRUE입니다.

PS> 2 -gt (4 -and 1)
True

그러나 이 예제에서는 운영자 우선 순위를 관리하는 중요한 원칙을 보여 줍니다. 사용자가 식을 해석하기 어려운 경우 기본 연산자 우선 순위를 강제로 적용하는 경우에도 괄호를 사용하여 계산 순서를 강제로 적용합니다. 괄호는 스크립트를 읽고 기본 사람들에게 의도를 명확하게 합니다.

참고 항목