PowerShell 문자열 기본 매개 변수 값이 예상대로 작동하지 않음
#Requires -Version 2.0
[CmdletBinding()]
Param(
[Parameter()] [string] $MyParam = $null
)
if($MyParam -eq $null) {
Write-Host 'works'
} else {
Write-Host 'does not work'
}
출력 "작동하지 않음" => 문자열이 암시적으로 null에서 빈 문자열로 변환된 것처럼 보입니다. 왜죠? 문자열이 비어 있거나 실제로 $208인지 테스트하는 방법은 무엇입니까?이것은 두 개의 다른 값이어야 합니다!
https://www.codykonior.com/2013/10/17/checking-for-null-in-powershell/ 에서 답을 찾았습니다.
가정:
Param(
[string] $stringParam = $null
)
그리고 매개 변수가 지정되지 않았습니다(기본값 사용 중).
# will NOT work
if ($null -eq $stringParam)
{
}
# WILL work:
if ($stringParam -eq "" -and $stringParam -eq [String]::Empty)
{
}
또는 특수 null 유형을 지정할 수 있습니다.
Param(
[string] $stringParam = [System.Management.Automation.Language.NullString]::Value
)
이 경우에$null -eq $stringParam
예상대로 작동할 것입니다.
이상해요!
사용해야 할 것입니다.AllowNull
허용할 경우 속성$null
문자열 매개 변수의 경우:
[CmdletBinding()]
Param (
[Parameter()]
[AllowNull()]
[string] $MyParam
)
그리고 비교 왼쪽에 $null을 사용해야 합니다.
if ($null -eq $MyParam)
예상할 수 있게 작동하기를
[String]과(와) 많은 동등성 비교:: Empty, [String]을 사용할 수 있습니다.:Is NullOrWhiteSpace 또는 [String]::IsNullOrEmpty 정적 메서드는 다음과 같습니다.
param(
[string]$parameter = $null
)
# we know this is false
($null -eq $parameter)
[String]::IsNullOrWhiteSpace($parameter)
[String]::IsNullOrEmpty($parameter)
('' -eq $parameter)
("" -eq $parameter)
다음과 같은 결과가 나옵니다.
PS C:\...> .\foo.ps1
False
True
True
True
True
$null 값을 유지하려면 매개 변수의 유형을 선언하지 마십시오.
Param(
$stringParam
)
(타입을 선언할 때 다른 솔루션은 하나도 적용되지 않았습니다.)
그래서 그것은 기본값으로 보입니다.$null
유형 모수의 경우[string]
기본값은 어떤 이유에서든 빈 문자열입니다.
옵션1
if ($stringParam) { ... }
옵션2
if ($stringParam -eq "") { ... }
옵션3
if ($stringParam -eq [String]::Empty) { ... }
언급URL : https://stackoverflow.com/questions/22906520/powershell-string-default-parameter-value-does-not-work-as-expected
'programing' 카테고리의 다른 글
XML에서 따옴표를 사용합니다. 한 개입니까, 두 개입니까? (0) | 2023.09.13 |
---|---|
선택한 사용자 지정 관리 하위 메뉴를 수동으로 설정하는 방법은 무엇입니까? (0) | 2023.09.13 |
데이터베이스 쿼리 선택 mariadb maxscale에서 자주 호출됨 (0) | 2023.09.08 |
HTML 사이트에 사용자 지정 글꼴을 설치하는 방법 (0) | 2023.09.08 |
Data Jpa의 쿼리에 @Modifying 주석을 사용해야 하는 이유 (0) | 2023.09.08 |