about_Logical_Operators

about_Logical_Operators

PowerShell에서 여러 조건을 하나로 묶어 판단할 때 쓰는 게 논리 연산자예요. -and·-or·-xor·-not(줄여서 !) 네 가지가 있고, 이 문서에서 각각이 언제 TRUE가 되는지 실제 예시와 함께 살펴볼게요.

출처: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logical_operators

본문

간단한 설명

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 또는 $b20보다 작을 때만 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예요.

더 알아보기