다른 프로그래밍 언어와 마찬가지로 PowerShell에도 여러 비교 연산자가 있습니다. 그러나 다른 언어와는 달리 이러한 비교 연산자들은 약간 이상하게 보일 수 있습니다. ==
대신에 eq
를 사용합니다. <>
대신에 ne
를 사용합니다. 이는 초보자에게 혼동을 줄 수 있습니다. 이 기사에서는 PowerShell의 like 연산자와 다른 비교 연산자들을 살펴보겠습니다.
eq
및 ceq
연산자를 사용하여 동등성 테스트하기
PowerShell에서 한 객체가 다른 객체와 동일한지 확인하기 위해 eq
연산자를 사용합니다. eq
연산자는 문자열, 부울 값, 정수 등 다양한 유형의 단순한 객체를 비교합니다. 사용할 때 eq
연산자는 결과에 따라 부울 True
또는 False
값을 반환합니다.
-eq
연산자는 비교할 두 개의 값이 필요합니다. 예를 들어, $string
이라는 변수에 문자열을 할당했다고 가정해 봅시다. 이 변수의 값이 문자열 값 "PowerShell"
과 동일한지 확인하려고 합니다.
다음 예제에서는 변수 $string
에 값 PowerShell
을 할당하는 것을 볼 수 있습니다. 그런 다음 eq
연산자를 사용하여 예제는 변수 $string
의 값을 문자열 powershell
과 비교합니다. 쉽죠? 하지만, 실제로는 정말 같지 않습니다.
=
는 할당 연산자이며 비교 연산자가 아님을 참고하세요. PowerShell에서는=
를 사용하여 한 값을 다른 값과 비교할 수 없습니다.
ceq
연산자로 대소문자 구분 테스트하기
위의 예제에서, eq
는 문자열이 정확히 같지 않아도 불리언 True
값을 반환하는 것을 주목하세요. 이 동작은 eq
연산자가 대소문자를 구분하지 않기 때문에 발생합니다. 대소문자 구분 테스트를 위해 ceq
연산자를 사용하세요. ceq
연산자는 대소문자를 구분한다는 점을 제외하고는 eq
와 정확히 동일합니다.
ceq
를 사용하는 예제를 다음 코드 스니펫에서 볼 수 있습니다. 이제 PowerShell이 대소문자 차이를 인식하는 것을 주목하세요.
ne
및 cne
연산자로 부등호 검사하기
eq
와 ceq
가 동일성을 테스트하는 것처럼, PowerShell에는 이와 정반대인 ne
와 cne
라는 쌍의 연산자가 있습니다. 이 두 연산자는 동일한 작업을 수행하지만 반대로 실행됩니다.
컬렉션 내의 항목 테스트하기
일반적으로, eq
와 ceq
연산자는 문자열, 정수 및 부울 값과 같은 스칼라 또는 단일 값에 사용됩니다. 하지만 이러한 연산자는 배열과 같은 컬렉션 내에 포함된 특정 값의 인스턴스도 찾을 수 있습니다.
아래 예제에서 볼 수 있듯이, 12개의 정수로 구성된 배열을 생성하고 있습니다. 이 배열에서 숫자 9와 동일한 인스턴스를 모두 찾으려면 eq
연산자를 사용하여 배열에 대한 비교 정수의 모든 인스턴스를 반환할 수 있습니다.
값 포함 여부 테스트
배열에서 인스턴스를 찾는 데 eq
연산자를 사용하는 방법을 배웠으니, 더 나아가서 “포함” 연산자를 소개하겠습니다. 이 연산자들은 contains
, notcontains
, in
및 notin
입니다. 이러한 연산자는 컬렉션에 인스턴스가 포함되어 있는지 여부에 따라 불리언 True
또는 False
값을 반환합니다.
다음 예제를 살펴보세요. 이 예제에서는 아홉 개의 정수로 구성된 배열을 생성하고 있습니다. 특정 정수가 해당 배열에 포함되어 있는지에 대한 간단한 예/아니오 답변이 필요하다면 contains
또는 notcontains
를 사용하여 확인할 수 있습니다.
비슷하게, in
및 notin
연산자도 있습니다. 이러한 연산자들은 contains
와 notcontains
와 거의 동일하지만 한 가지 차이가 있습니다: 비교할 값이 오른쪽이 아닌 왼쪽에 위치합니다.
gt
및 ge
연산자로 “초과” 테스트하기
만약 숫자(정수)가 다른 숫자보다 큰지 또는 다른 숫자보다 크거나 같은지를 테스트해야 하는 경우 어떻게 될까요? gt
와 ge
연산자를 사용합니다. 이러한 연산자는 정수를 비교합니다.
다른 연산자와 마찬가지로, 이러한 연산자는 한 정수가 다른 정수보다 큰지 여부에 따라 부울 True
또는 False
값을 반환합니다. 이러한 연산자 모두 왼쪽 정수가 오른쪽 정수보다 큰지 또는 크거나 같은지를 테스트합니다.
아래 예제에서는 각 연산자의 동작 방식을 볼 수 있습니다.
eq
연산자와 마찬가지로, ge
와 gt
연산자를 사용하여 컬렉션에서 인스턴스를 찾을 수 있습니다. PowerShell은 각 항목을 검색하고 각 값을 제공한 값과 비교합니다. 아래에서 이에 대한 좋은 예제를 볼 수 있습니다.
lt
와 le
연산자를 사용하여 “작은 값” 테스트하기
gt
와 ge
연산자와 마찬가지로, lt
와 le
연산자도 동일한 기능을 수행하지만 정반대입니다. lt
와 le
연산자는 왼쪽에 있는 정수가 오른쪽에 있는 정수보다 작은지 또는 작거나 같은지를 테스트합니다.
아래 예제에서는 컬렉션의 각 값을 비교하는 기능이 gt
와 ge
와 정확히 동일하게 적용된 것을 볼 수 있습니다.
PowerShell Like 연산자를 사용하여 와일드카드를 기반으로 일치하는 항목 찾기
지금까지 1:1 매치를 수행하는 방법을 배웠습니다. 지금까지 사용한 모든 연산자는 하나의 전체 값을 다른 값과 비교했지만 PowerShell에는 또 다른 기능이 있습니다. 와일드카드 또는 별표를 기반으로 값들을 비교할 수도 있습니다.
문자열의 일부 문자만 알고 있는 경우라면 eq
를 사용할 수 없습니다. 왜냐하면 eq
는 전체 문자열을 알아야 하기 때문입니다. PowerShell like 연산자를 사용하면 전체 문자열을 알 필요가 없습니다. 값이 다른 값과 유사한지 테스트하려면 알지 못하는 부분을 와일드카드로 대체할 수 있습니다.
다른 연산자와 마찬가지로 이 기능은 컬렉션에도 적용할 수 있습니다.
PowerShell like 및 대소문자를 구별하는 형제인 clike
의 예제를 아래에서 볼 수 있습니다.
연산자 -notlike
는 일치하는 항목이 없는 경우 부울값 True
를 반환하고, 일치하는 항목이 있는 경우 False
를 반환합니다. 컬렉션에 대해 사용하는 경우, 오른쪽에 있는 -notlike
연산자의 패턴과 일치하지 않는 모든 다른 값들을 반환합니다. 패턴에 대한 대소문자 구분을 추가하려면 -cnotlike
연산자를 사용하십시오.
정규 표현식을 기반으로 일치하는 항목 찾기
PowerShell와 유사한 연산자와 그와 관련된 연산자는 유용하지만 더 복잡한 매칭이 필요해지면 정규 표현식 (regex)의 깊고 어둡고 심오한 세계로 들어갈 수 있습니다. match
및 notmatch
연산자를 사용하여 정규 표현식으로 매우 복잡한 문자열 매칭을 수행할 수 있습니다.
PowerShell의 유사 연산자와 유사하게 match
와 그와 반대되는 notmatch
는 두 개의 문자열을 비교하여 부울 True
또는 False
값을 반환합니다. 또한 다음 예제와 같이 동일한 동작을 컬렉션에 적용할 수도 있습니다.
요약
이 문서에서는 PowerShell의 유사 연산자와 다른 연산자들에 대해 알아보고, 각 연산자를 단일 값과 컬렉션에 대해 어떻게 사용하는지 알아보았습니다. 연산자와 스칼라 또는 컬렉션에 따라 출력이 어떻게 다른지 확인했습니다.
게다가 대소문자 구분이 있는 연산자, 정규 표현식 또는 와일드카드를 기반으로 매칭하는 연산자, 특정 값을 포함하는지 여부를 테스트하는 포함 연산자 및 특정 개체에 값이 있는지 여부를 테스트하는 포함 연산자도 확인했습니다.
