파워셸 포함 연산자

PowerShell에서 주어진 입력 문자열과 일치하는 요소를 필터링/비교하거나 찾을 수 있는 다양한 연산자가 있습니다. -contains
는 주요 비교 연산자 중 하나로, 포함 유형 연산자로 분류됩니다.
포함 유형 연산자는 총 네 가지가 있습니다.
-contains
-notcontains
-in
-notin
이 기사에서는 -contains
연산자에만 집중합니다. 이 연산자는 일치하는 경우 항상 부울 값(true/false)을 반환합니다. 또한 성능 면에서 -contains
연산자는 첫 번째 일치를 찾자마자 입력 비교를 중지하기 때문에 결과를 반환하는 데 매우 빠릅니다.
PowerShell의 -contains
연산자
이 연산자는 컬렉션이 특정 요소를 포함하는지 확인하는 데 사용됩니다. 구문은 다음과 같습니다.
[set / collection] -contains [test-value or test-object]
[set/collection]
은 문자열 값 집합(쉼표로 구분됨)일 수 있습니다. 예를 들어, "Hello"
또는 "FOX", "2ndLane"
입니다.
[test-value or test-object]
는 요소 또는 요소 집합(컬렉션)일 수 있습니다. 예를 들어, "Hello"
또는 "Hello", "FOX", "No2"
입니다.
특정 요소 확인
- 예제 01:
"Hello", "FOX", "2ndLane" -contains "2ndLane"
출력:
True
입력 요소/값은 "2ndLane"
이며, 이는 왼쪽에 있는 컬렉션/집합에 위치할 수 있습니다. 따라서 출력/결과는 분명히 True
입니다.
- 예제 02:
"Hello", "FOX", "2ndLane" -contains "NotInTheCollection"
출력:
False
입력 요소/값은 "NotInTheCollection"
이며, 이는 오른쪽 컬렉션에 포함되어 있지 않습니다. 따라서 위의 명령은 False
로 평가되었습니다.
-contains
연산자에 대한 중요한 사실은 주어진 컬렉션/집합 내에서 정확한 입력 요소를 확인한다는 것입니다. 부분 문자열이 입력 요소로 주어지면 명령은 False
로 평가됩니다.
- 예제 03:
"Hello", "FOX", "FullStringGiven" -contains "StringGiven"
출력:
False
위 예제에서 입력 요소는 "StringGiven"
이지만, 이는 오른쪽 컬렉션의 "FullStringGiven"
요소의 부분 문자열입니다. 따라서 입력 요소는 오른쪽 컬렉션의 정확한 요소와 일치하지 않으며, 결과는 예상대로 False
입니다.
PowerShell에서 -contains
연산자로 요소/컬렉션 집합 확인
-contains
연산자의 가장 큰 장점 중 하나는 주어진 컬렉션/집합이 입력 컬렉션과 일치하는지 찾는 데 사용할 수 있다는 점입니다. 이 연산자는 왼쪽(주어진 컬렉션)과 오른쪽(입력 컬렉션/테스트 컬렉션)에 동일한 인스턴스가 존재하는지 확인합니다. 즉, 입력 객체(테스트 객체)가 컬렉션일 때 이러한 포함 연산자는 참조 동등성을 사용합니다.
예제 01
$leftsideobj = "Hello", "NewString1"
여기에서 $leftsideobj
변수를 요소 집합(컬렉션)에 할당합니다.
$leftsideobj, "AnotherString" -contains $leftsideobj
그런 다음, -contains 연산자를 사용하여 일치를 찾습니다.
출력:
True
이 명령은 True
로 평가되었습니다. 입력 컬렉션은 $leftsideobj
이며, 동일한 인스턴스가 왼쪽 컬렉션에 있습니다. 이는 참조 동등성이 충족되었음을 의미합니다. 따라서 결과는 True
입니다.
예제 02
$newleftsideobj = "Hello", "Test"
여기에서 $newleftsideobj
변수를 "Hello"
와 "Test"
요소가 포함된 컬렉션에 할당했습니다.
`"Hello", "Test", "NewString1" -contains $newleftsideobj`
출력:
False
위의 명령은 False
로 평가되었습니다. 입력 컬렉션(오른쪽)은 $newleftsideobj
이며, 이는 간접적으로 두 요소 "Hello"
와 "Test"
를 포함합니다. 왼쪽 측면을 보면 "Hello"
와 "Test"
요소가 있지만, 이는 참조 동등성을 만족하지 않습니다. 그래서 출력은 False
입니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.