powershell 아직 할당되지 않은 변수 테스트
변수에 변수가 할당되었는지 여부와 작업을 수행하지 않았는지 여부를 검정하려고 합니다.어떻게 이것을 달성할 수 있습니까?
다음 코드로 시도했지만 오류가 발생합니다.'-is'의 오른쪽 피연산자는 형식이어야 합니다.
$ProgramName은 현재 할당되지 않았습니다.
If ($ProgramName -isnot $null) {
$ProgramName = $ProgramName + ', ' + $cncPrograms
}
Else {
If ($cncPrograms -isnot $null) {
$ProgramName = $cncPrograms
}
}
할당되지 않은 변수의 값은 null이지 데이터 유형이 아닙니다.이렇게 하면 됩니다.
If ($ProgramName -ne $null)
...돌아올 것입니다.TRUE
값이 할당되지 않은 경우.
훨씬 더 쉽게 확인할 수 있는 것은
IF($ProgramName)
그게 맞는지 확인할 것입니다.$null
아니면, 논리는 반대지만, 그래서 당신은 사용할 수 있습니다.
IF(!$ProgramName)
편집:
Ruffin은 댓글에서 엄격한 모드에 대한 좋은 점을 제기합니다.이 방법은 다음과 같이 사용할 수 있습니다.
Test-Path variable:ProgramName
또는Test-Path variable:global:ProgramName
예를 들어, 명시적으로 글로벌 범위인 경우.반환됩니다.$true
또는$false
변수가 존재하는지 여부에 따라 달라집니다.
Test-Path variable:\var
당신이 원하는 것을 해야 한다고 생각합니다.
위의 답변과는 반대로
Test-Path variable:ProgramName
변수의 존재만 테스트하기 때문에 찾고 있는 것이 아닐 수 있습니다.변수가 $null로 설정된 경우에도 $true를 반환합니다.
따라서 엄격한 모드에서 해당 항목의 존재 여부와 비어 있지 않은지 여부를 테스트해야 할 수도 있습니다.
Set-StrictMode -version Latest
#TODO Add a scope parameter
Function IsEmpty([string]$varname){
if (Test-path "variable:$varname"){
$val=(gi "variable:$varname").value
if ($val -is [bool]) {$false}
else {$val -eq '' -or $val -eq $null} }
else{ $true }
}
#TEST:
if (test-path variable:foobar){remove-variable foobar} ; IsEmpty foobar
$foobar=$null; IsEmpty foobar
$foobar=''; IsEmpty foobar;
$foobar=$false; IsEmpty foobar
#Results:
True
True
True
False
엄격한 모드는 스크립팅의 재미를 덜어줍니다.
-가 유형용이 아니라는 사실 외에도 파워셸 7에는 이 목적을 위한 새로운 연산자가 있습니다.왼쪽이 $null인 경우에만 할당이 수행됩니다.
$programname ??= 'foo'
JNK와 David의 (올바른) 답변을 기반으로 하려면, Jeffrey Snover가 PowerShell에서 부울식의 모든 사용 사례를 안내하는 이 훌륭한 블로그 게시물을 확인하십시오.변수의 존재를 검사하는 방법으로 끝납니다.
https://devblogs.microsoft.com/powershell/boolean-values-and-operators/
-is 또는 -isnot는 변수가 설정된 데이터 유형을 확인하는 것입니다.예:
$Test -is [String] -or $Test -isNot [Int]
선언되지 않은 $var는 {$Test -eq $null}을(를) 사용하여 평가할 수 있습니다.코드의 어느 곳에서든 $var를 무효화하면 다른 방식으로 평가해야 합니다.
저는 개인적으로 스크립트에서 사용할 $var를 먼저 무효화하여 미리 설정했습니다.
[Array]$TestArray = @()
[String]$TestString = $null
[String]을 사용하는 경우:: 비어 있고 var는 True를 반환하지 않고 false를 반환하는 빈 공간을 선택합니다.
$TestString -eq [String]::Empty
문자열이 비어 있는지 여부를 평가하고 공백을 무시하려면 다음 방법을 사용합니다.
[string]::IsNullOrWhiteSpace($TestString)
배열이 비어 있는지 평가하려면 $var를 사용해야 합니다.세어보세요.
$TestArray.Count -ge 1
언급URL : https://stackoverflow.com/questions/9181473/powershell-testing-a-variable-that-hasnt-being-assign-yet
'it-source' 카테고리의 다른 글
jQuery를 통한 Gmail like 파일 업로드 (0) | 2023.08.24 |
---|---|
HTML 또는 Javascript에서 PHP 파일을 호출하는 방법 (0) | 2023.08.24 |
파워셸을 통해 컬을 실행합니다 - 인수를 구성하는 방법은 무엇입니까? (0) | 2023.08.24 |
각 Kotlin에 대한 현재 인덱스를 가져오는 방법 (0) | 2023.08.24 |
문자열을 통해 PowerShell에서 함수 호출 (0) | 2023.08.24 |