PowerShell EQ 연산자 이해

PowerShell 비교 연산자인 eq, ne, ceq, cne과 같은 것들을 이해하는 데 어려움을 겪고 계신가요? 그렇다면 계속 읽어보세요.

소프트웨어 개발 배경을 가진 사람으로서 처음으로 PowerShell의 비교 연산자인 eq, ceq, cne 등을 보았을 때 “뭐야?”라는 순간이 있었습니다. 다른 모든 언어는 비교 연산자를 가지고 있지만 PowerShell처럼 독특한 구조는 아니었습니다. 저는 ==<>을 사용하던데 익숙했습니다.

이 구문은 다른 프로그래밍 언어와는 완전히 다르게 보이며 값의 컬렉션을 비교할 때 다르게 작동하기 때문에 이해하기 어려웠습니다.PowerShell을 배울 때 이 부분이 저를 정말 힘들게 했지만, 지금은 오래된 맥주 광고처럼 느껴집니다. 미묘한 차이점을 이해하는 것이 필요한 것이죠.

익숙하지 않은 분들을 위해 간단하게 비교 연산자가 무엇인지 알아보고, PowerShell이 도입하는 미묘한 점에 대해 더 자세히 알아보겠습니다. 곧이 곧대로 PowerShell 스크립트에서 연산자를 자유롭게 사용할 수 있게 될 것입니다.

말했듯이, 모든 프로그래밍/스크립팅 언어에는 비교 연산자가 있습니다. 가장 기본적으로, 비교 연산자는 어떤 것과 다른 것을 비교하여 어떤 차이가 있는지 (있을 경우)를 평가하는 데 필요합니다. 이 연산자들은 두 개체를 가져와서 그 두 개체 간의 차이를 확인하는 데 사용됩니다.

PowerShell의 경우, 연산자는 값의 컬렉션 내에서 요소를 찾는 데에도 사용될 수 있습니다.

이 게시물에서는 PowerShell이 사용하는 동등 연산자에 대해 알아보겠습니다. 이러한 연산자는 eqne와 대소문자를 구분하는 ceqcne입니다. 전체 목록은 Technet 사이트를 참조하거나 Powershell 콘솔에서 Get-Help about_comparison_operators을 사용할 수 있습니다.

PowerShell -EQ 및 -CEQ

객체가 다른 객체와 동일한지 확인해야하는 경우에는 eq (대소문자 구분 안 함) 또는 ceq (대소문자 구분 함) 연산자를 사용해야합니다. 이러한 연산자는 비교하려는 각 항목의 값을 테스트합니다.

PowerShell을 처음 배울 때 저는 항상 다음과 같은 작업을 했습니다.

$string = 'Adam'
if ($string = 'Adam') {
    'string is equal to Adam'
}

곧 그러한 작업을 하지 않을 것입니다. = 기호는 할당 연산자이며 비교 연산자가 아닙니다. = 기호를 사용하여 한 값과 다른 값을 비교할 수 없습니다.

이를 올바르게 수행하는 방법은 식의 왼쪽에 확인할 값을 정의하고 eq 연산자를 사용하는 것입니다. 다음은 eqceq 연산자 및 그 사용 방법의 예제입니다.

PowerShell’s eq vs ceq

eq가 변수를 adam과 비교할 때 불리언 True 값을 반환하고 ceq가 불리언 False 값을 반환하는 것을 알 수 있습니까? 이는 두 연산자 간의 대소문자 구분 차이를 나타냅니다.

이는 모두 하나의 값에 대해서는 잘 작동하지만, 이러한 연산자를 사용하여 특정 값의 모든 인스턴스를 찾을 수도 있습니다. 예를 들어, PowerShell의 -eq 연산자를 사용하여 배열의 항목을 필터링할 수 있습니다:

Using Eq to search arrays

배열과 같은 값의 컬렉션을 가진 변수가 있는 경우, 컬렉션 내부의 값의 모든 인스턴스를 찾기 위해 eqceq를 사용할 수 있습니다.

비교 대상으로 정수 9의 모든 인스턴스를 찾았음을 알 수 있습니다. 저는 이 편리한 방법을 항상 사용합니다.

-NE 및 -CNE

반대로, necne도 있습니다. 이들은 eqceq의 정반대이지만 정확히 같은 동작을 하며, 같지 않음을 테스트합니다.

PowerShells ne vs. cne

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.

Source:
https://adamtheautomator.com/powershell-eq/