about_Logical_Operators
about_Logical_Operators
PowerShell에서 여러 조건을 하나로 묶어 판단할 때 쓰는 게 논리 연산자예요. -and·-or·-xor·-not(줄여서 !) 네 가지가 있고, 이 문서에서 각각이 언제 TRUE가 되는지 실제 예시와 함께 살펴볼게요.
본문
간단한 설명
PowerShell에서 문장(statement)들을 서로 이어 주는 연산자에 대해 설명해요.
자세한 설명
PowerShell 논리 연산자는 식(expression)과 문장을 연결해서, 하나의 식으로 여러 조건을 한 번에 검사할 수 있게 해 줘요.
논리 연산자를 쓰는 문장은 항상 부울(TRUE 또는 FALSE) 값을 돌려줘요.
여기서 중요한 특징이 하나 있어요. PowerShell 논리 연산자는 문장의 참·거짓을 판단하는 데 필요한 부분만 계산해요. -and가 들어간 문장에서 왼쪽 피연산자가 FALSE면, 오른쪽 피연산자는 아예 평가하지 않아요. 반대로 -or가 들어간 문장에서 왼쪽 피연산자가 TRUE면, 오른쪽은 평가하지 않죠. 덕분에 이런 문장들을 if 문처럼 자유롭게 활용할 수 있어요.
중요
-and,-or,-xor는 우선순위가 동일해요. 그래서 식 안에 나타난 순서대로 왼쪽에서 오른쪽으로 평가돼요. 자세한 내용은 about_Operator_Precedence에서 다룰게요.
구문(Syntax)
논리 연산자의 구문은 이렇게 생겼어요.
<statement> {-and | -or | -xor} <statement>
{! | -not} <statement>
예시
아래 예시는 -and와 -or를 써서 조건문 세 개를 하나로 이은 모습이에요. $a가 $b보다 크고, 동시에 $a 또는 $b가 20보다 작을 때만 TRUE가 돼요.
($a -gt $b) -and (($a -lt 20) -or ($b -lt 20))
PowerShell이 지원하는 논리 연산자는 다음과 같아요.
- 논리 AND(
-and) — 두 문장이 모두 TRUE일 때 TRUE예요.
(1 -eq 1) -and (1 -eq 2) # Result is False
- 논리 OR(
-or) — 두 문장 중 하나라도 TRUE이면 TRUE예요.
(1 -eq 1) -or (1 -eq 2) # Result is True
- 논리 배타적 OR(
-xor) — 두 문장 중 한쪽만 TRUE일 때 TRUE예요.
(1 -eq 1) -xor (2 -eq 2) # Result is False
- 논리 NOT(
-not) 또는(!) — 뒤따르는 문장을 부정(반전)해요.
-not (1 -eq 1) # Result is False
!(1 -eq 1) # Result is False
앞선 예시들에는 비교 연산자인 -eq도 함께 쓰였어요. 자세한 내용은 about_Comparison_Operators에서 다룰게요. 예시들은 정수의 부울 값도 보여주는데, 정수 0은 부울로 FALSE이고 그 외 모든 정수는 TRUE예요.
더 알아보기
- about_Operators → https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_operators
- about_Operator_Precedence → https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_operator_precedence
- about_Comparison_Operators → https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators
- about_If → https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_if
- Compare-Object → https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/compare-object