PowerShell의 널 변수
PowerShell은 $Null
개체를 null 값으로 처리하고 일부 명령은 생성하려면 일부 출력이 필요합니다. 오류가 있는 경우 null 값을 생성하고 스크립트의 문제 해결 목적에서 명령이 값을 생성하는지 확인하는 데 도움이 될 수도 있습니다.
이 문서에서는 null 변수, PowerShell의 다른 구문에서 null 변수를 사용할 때의 영향, null 값을 확인하는 방법에 대해 설명합니다.
PowerShell의 Null 변수 소개
NULL은 알 수 없거나 비어 있는 값으로 생각할 수 있습니다. 예를 들어, 변수는 값이나 개체를 할당할 때까지 NULL입니다.
이 변수는 일부 명령에 값이 필요하고 값이 NULL인 경우 오류를 생성하기 때문에 중요할 수 있습니다.
$null
변수는 NULL을 나타내는 데 사용되는 PowerShell의 자동 변수입니다. 변수에 할당하고 비교에 사용하고 컬렉션에서 NULL에 대한 자리 표시자로 사용할 수 있습니다.
PowerShell은 $null
을 NULL 값을 가진 개체로 취급합니다. 따라서 이 변수는 다른 언어에서 온 경우 예상할 수 있는 것과 다릅니다.
PowerShell에서 Null 변수의 영향
$null
값은 나타나는 위치에 따라 코드에 다르게 영향을 줍니다.
문자열에 미치는 영향
문자열에 $null
을 사용하면 빈 값(또는 빈 문자열)이 됩니다.
$value = $null
Write-Output "The value is $value."
출력:
The value is .
이 변수는 로그 메시지에서 변수를 사용할 때 변수를 괄호로 묶어야 하는 이유 중 하나입니다. 값이 문자열 끝에 있을 때 변수 값의 가장자리를 식별하는 것이 훨씬 더 중요합니다.
$value = $null
Write-Output "The value is [$value]"
출력:
The value is []
이 변수를 사용하면 빈 문자열과 $null
값을 쉽게 찾을 수 있습니다.
수치 방정식에 미치는 영향
$null
변수가 숫자 방정식에 사용될 때 오류가 발생하지 않으면 결과가 유효하지 않습니다. 때로는 $null
변수가 0
으로 평가되고 다른 경우에는 전체 결과가 $null
이 됩니다.
다음은 값의 순서에 따라 0
또는 $null
을 제공하는 곱셈과 관련된 예입니다.
$null * 5
$null -eq ( $null * 5 )
출력:
True
컬렉션에 미치는 영향
컬렉션을 사용하면 인덱스를 사용하여 값에 액세스할 수 있습니다. null 컬렉션을 인덱싱하려고 하면 Cannot index into the null array
라는 오류가 발생합니다.
$value = $null
$value[10]
출력:
Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
컬렉션이 있지만 컬렉션에 없는 요소에 액세스하려고 하면 $null
결과가 표시됩니다.
$array = @( 'one', 'two', 'three' )
$null -eq $array[100]
출력:
True
물체에 미치는 영향
속성이 지정되지 않은 개체의 속성이나 하위 속성에 액세스하려고 하면 정의되지 않은 변수와 마찬가지로 $null
변수를 얻을 수 있습니다. 이 경우 값이 $null
인지 실제 개체인지는 중요하지 않습니다.
$null -eq $undefined.not.existing
출력:
True
방법에 대한 영향
$null
변수에서 메소드를 호출하면 RuntimeException
예외가 발생합니다.
$value = $null
$value.toString()
출력:
You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
널 값 표현식에서 메소드를 호출할 수 없습니다
라는 문구를 볼 때마다 먼저 $null
값을 확인하지 않고 변수에 대한 메소드를 호출할 위치를 찾을 수 있습니다.
PowerShell에서 Null 값 확인
예제에서 $null
값을 확인할 때 항상 $null
변수를 왼쪽에 배치합니다.
이 스타일의 작성은 의도적이며 PowerShell 모범 사례로 받아들여집니다. 그러나 오른쪽에 배치해도 예상한 결과를 얻지 못하는 몇 가지 시나리오가 있습니다.
다음 예를 보고 결과가 어떻게 될지 예측해 보겠습니다.
if ( $value -eq $null ){
'The array is $null'
}
if ( $value -ne $null ){
'The array is not $null'
}
$value
를 정의하지 않으면 첫 번째 항목은 $true
로 평가되고 메시지는 The array is $null
이 됩니다. 여기서 주의할 점은 두 결과가 모두 $false
가 되도록 허용하는 $value
를 생성할 수 있다는 것입니다.
출력:
$value = @( $null )
이 경우 $value
변수는 $null
을 포함하는 배열입니다.
-eq
연산자는 배열의 모든 값을 확인하고 일치하는 $null
을 반환합니다(이는 $false
로 평가됨). -ne
연산자는 $null
값과 일치하지 않는 모든 항목을 반환하며 이 경우 결과가 없습니다(이것도 $false
로 평가됨).
따라서 둘 중 하나가 되어야 하는 경우에도 둘 다 $true
가 되지 않습니다.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn