PowerShell 삼항 연산자로 조건 논리 간소화하기

if/then 구조는 PowerShell 코드에서 흔히 사용되지만, if/then 구조를 더 간결하게 만들어주는 삼항 연산자라는 다른 방법이 있다는 것을 알고 계셨나요? 커스텀 PowerShell 삼항 연산자를 만드는 방법을 배워봅시다.

가독성을 희생한다는 이야기도 있지만, 삼항 연산자는 더 간결하고 코드가 적은 조건부 로직을 구축합니다. 맞는 말이지만 PowerShell에서 그 삼항 연산자와 비슷한 동작을 할 수 있는 것만으로도 좋은 것 같습니다!

삼항 연산자에 익숙하지 않다면, 기본적으로 조건에 따라 결정을 내리기 위해 해시테이블 또는 유사한 구조를 사용한다는 의미입니다.

PowerShell에서의 If/Then

PowerShell 삼항 연산자를 설명하기 위해, 먼저 if/then 구조의 예제로 시작해봅시다.

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

처음에는 이것과는 아무런 문제가 없다고 생각할 수도 있습니다. 사실, 실제로 그렇습니다. 하지만 이 조건은 한 줄로 테스트할 수 있습니다(제 개인적인 제한인 115자 이내로).

이제 PowerShell 해시테이블을 두 개의 키, $true$false로 구성해보세요. 그리고, 조건을 정의하고 만족할 때 표시하고자 하는 값을 값으로 설정하세요.

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

다음으로, 조건($CarColor이 'Blue'인지 확인)을 정의하고 $CarColor -eq 'Blue'로 그 조건이 충족되는지 확인합니다.

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

이제 조건($CarColor -eq 'Blue')을 해시 테이블의 키로 사용합니다. 이렇게 하면 확인 작업을 수행한 다음 그 결과를 해시 테이블에서 키로 찾아냅니다.

PowerShell 삼항 연산자 마무리

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

한 줄! 이제 훨씬 간결하지 않나요? if/then 문 대신 해시 테이블을 사용하고 $CarColorBlue와 같은지 여부에 따라 키를 찾아내는 방식입니다. 그 결과 인덱스를 콘솔에 출력합니다. 이 방법을 사용하려면 다음 빈칸을 채우면 됩니다:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

$true$false만 사용하는 것이 아니라 다른 조건을 해시 테이블에 추가하고 확인할 수도 있습니다. 이렇게 하면 긴 if/then 문이나 switch 문을 대체하기 쉽습니다.

이제 스크립트에서 사용할 수 있는 사용자 정의 PowerShell 삼항 연산자가 있습니다!

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