PowerShell 비교 연산자인 eq
, ne
, ceq
, cne
과 같은 것들을 이해하는 데 어려움을 겪고 계신가요? 그렇다면 계속 읽어보세요.
소프트웨어 개발 배경을 가진 사람으로서 처음으로 PowerShell의 비교 연산자인 eq
, ceq
, cne
등을 보았을 때 “뭐야?”라는 순간이 있었습니다. 다른 모든 언어는 비교 연산자를 가지고 있지만 PowerShell처럼 독특한 구조는 아니었습니다. 저는 ==
와 <>
을 사용하던데 익숙했습니다.
이 구문은 다른 프로그래밍 언어와는 완전히 다르게 보이며 값의 컬렉션을 비교할 때 다르게 작동하기 때문에 이해하기 어려웠습니다.PowerShell을 배울 때 이 부분이 저를 정말 힘들게 했지만, 지금은 오래된 맥주 광고처럼 느껴집니다. 미묘한 차이점을 이해하는 것이 필요한 것이죠.
익숙하지 않은 분들을 위해 간단하게 비교 연산자가 무엇인지 알아보고, PowerShell이 도입하는 미묘한 점에 대해 더 자세히 알아보겠습니다. 곧이 곧대로 PowerShell 스크립트에서 연산자를 자유롭게 사용할 수 있게 될 것입니다.
말했듯이, 모든 프로그래밍/스크립팅 언어에는 비교 연산자가 있습니다. 가장 기본적으로, 비교 연산자는 어떤 것과 다른 것을 비교하여 어떤 차이가 있는지 (있을 경우)를 평가하는 데 필요합니다. 이 연산자들은 두 개체를 가져와서 그 두 개체 간의 차이를 확인하는 데 사용됩니다.
PowerShell의 경우, 연산자는 값의 컬렉션 내에서 요소를 찾는 데에도 사용될 수 있습니다.
이 게시물에서는 PowerShell이 사용하는 동등 연산자에 대해 알아보겠습니다. 이러한 연산자는 eq
및 ne
와 대소문자를 구분하는 ceq
및 cne
입니다. 전체 목록은 Technet 사이트를 참조하거나 Powershell 콘솔에서 Get-Help about_comparison_operators
을 사용할 수 있습니다.
PowerShell -EQ 및 -CEQ
객체가 다른 객체와 동일한지 확인해야하는 경우에는 eq
(대소문자 구분 안 함) 또는 ceq
(대소문자 구분 함) 연산자를 사용해야합니다. 이러한 연산자는 비교하려는 각 항목의 값을 테스트합니다.
PowerShell을 처음 배울 때 저는 항상 다음과 같은 작업을 했습니다.
곧 그러한 작업을 하지 않을 것입니다. =
기호는 할당 연산자이며 비교 연산자가 아닙니다. =
기호를 사용하여 한 값과 다른 값을 비교할 수 없습니다.
이를 올바르게 수행하는 방법은 식의 왼쪽에 확인할 값을 정의하고 eq
연산자를 사용하는 것입니다. 다음은 eq
및 ceq
연산자 및 그 사용 방법의 예제입니다.

eq
가 변수를 adam
과 비교할 때 불리언 True
값을 반환하고 ceq
가 불리언 False
값을 반환하는 것을 알 수 있습니까? 이는 두 연산자 간의 대소문자 구분 차이를 나타냅니다.
이는 모두 하나의 값에 대해서는 잘 작동하지만, 이러한 연산자를 사용하여 특정 값의 모든 인스턴스를 찾을 수도 있습니다. 예를 들어, PowerShell의 -eq 연산자를 사용하여 배열의 항목을 필터링할 수 있습니다:

배열과 같은 값의 컬렉션을 가진 변수가 있는 경우, 컬렉션 내부의 값의 모든 인스턴스를 찾기 위해 eq
와 ceq
를 사용할 수 있습니다.
비교 대상으로 정수 9의 모든 인스턴스를 찾았음을 알 수 있습니다. 저는 이 편리한 방법을 항상 사용합니다.
-NE 및 -CNE
반대로, ne
와 cne
도 있습니다. 이들은 eq
와 ceq
의 정반대이지만 정확히 같은 동작을 하며, 같지 않음을 테스트합니다.

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.