PowerShell의 널 변수

PowerShell은 $Null
객체를 null 값으로 처리하며, 일부 명령은 출력을 생성해야 합니다. 오류가 발생하면 해당 값이 null로 생성되며, 또한 스크립트에서 명령이 값을 생성하는지 확인하는 데 도움이 될 수 있습니다.
이 기사는 null 변수, PowerShell의 다양한 문법에서 null 변수 사용의 영향 및 null 값을 확인하는 방법에 대해 설명합니다.
PowerShell의 Null 변수 소개
NULL을 미지의 값 또는 빈 값으로 생각할 수 있습니다. 예를 들어, 변수가 값이나 객체를 할당할 때까지 NULL입니다.
이 변수가 중요할 수 있는 이유는 일부 명령이 값을 요구하고 값이 NULL이면 실패하기 때문입니다.
$null
변수는 PowerShell에서 NULL을 나타내는 데 사용되는 자동 변수입니다. 변수에 할당하거나 비교에 사용할 수 있으며, 컬렉션의 NULL 자리 표시자로 사용할 수 있습니다.
PowerShell은 $null
을 NULL 값을 가진 객체로 처리합니다. 따라서 이 변수는 다른 언어에서 온 경우 예상하는 것과 다를 수 있습니다.
PowerShell에서 Null 변수의 영향
$null
값의 동작은 코드 내에서 나타나는 위치에 따라 달라질 수 있습니다. NULL 변수가 PowerShell 스크립팅의 다양한 측면에 어떤 영향을 미치는지 살펴봅시다.
문자열에 대한 영향
문자열에서 $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 a 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
"You cannot call a method on a null valued expression"
라는 문구를 만나면, $null
값을 확인하지 않고 변수에서 메서드가 호출되는 곳을 코드에서 점검하라는 신호입니다.
PowerShell에서 Null 값 확인하기
PowerShell에서 Null 값을 확인하기 위해 비교 연산자 -eq
및 -ne
사용
PowerShell에서 $null
값을 확인할 때는 비교의 왼쪽에 $null
변수를 배치하는 것이 모범 사례입니다. 이러한 작문 스타일은 의도적일 뿐만 아니라 PowerShell 모범 사례로 인정받고 있습니다.
그러나 $null
을 오른쪽에 배치할 경우 예상치 못한 결과를 가져오는 경우가 있습니다. 다음 코드를 살펴보고 결과를 예측해 봅시다:
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
를 생성하는 것이 가능하다는 것입니다.
출력:
The array is $null
이 경우, $value
변수는 $null
을 포함하는 배열입니다.
-eq
연산자는 배열 내의 모든 값을 확인하고 일치하는 $null
을 반환하여 $false
로 평가합니다. 유사하게 -ne
연산자는 $null
값과 일치하지 않는 모든 것을 반환하여 결과가 없고(또한 $false
로 평가됨) 됩니다.
따라서 두 조건 모두 $true
가 아니며, 그 중 하나가 $true
가 될 것으로 예상되었을지라도 그렇지 않습니다.
PowerShell에서 Null 값을 확인하기 위해 -not
연산자 사용
-not
연산자는 조건을 반대로 하는 PowerShell의 논리 연산자입니다. 변수에 적용하면 변수가 null이 아닌지 확인합니다.
$myVariable = $null
if (-not $myVariable) {
Write-Host "The variable is null."
}
이 코드 스니펫에서 $myVariable
이라는 변수를 null 값으로 초기화했습니다. -not
연산자가 if
문에서 사용되어 $myVariable
이 null이 아닌지 확인합니다.
조건이 참일 경우 스크립트는 if
문 내의 코드 블록을 실행합니다.
출력:
The variable is null.
출력에서 보듯이 스크립트는 $myVariable
이 null임을 인식하고 "The variable is null"
라는 메시지를 출력합니다.
PowerShell에서 Null 값을 확인하기 위해 IsNullOrEmpty()
메서드 사용
IsNullOrEmpty()
는 System.String
클래스의 메서드이며, 기본 PowerShell 메서드는 아닙니다. 서로 다른 데이터 유형은 null 또는 빈 값을 확인하는 다양한 방법이 있을 수 있습니다.
이 코드에서는 $myString
이라는 변수를 만들고 null 또는 빈 문자열을 나타내는 $null
값을 할당합니다.
[string]::IsNullOrEmpty($myString)
메서드를 사용하여 $myString
이 null이거나 빈 문자열인지 확인합니다. 이 메서드는 .NET 프레임워크의 [string]
클래스의 일부로, 문자열이 null이거나 빈 문자열인지 결정하는 데 사용됩니다.
$myString
이 실제로 null이거나 비어 있다면, 조건이 true이고 스크립트는 "The string is null or empty."
라는 메시지를 출력합니다.
$myString = $null
if ([string]::IsNullOrEmpty($myString)) {
Write-Host 'The string is null or empty.'
}
출력:
The string is null or empty.
$myString
이 $null
값을 할당받았기 때문에, 조건이 true이며 메시지가 출력됩니다.
PowerShell에서 Null 값을 확인하기 위해 IsNullOrWhiteSpace()
메서드 사용
IsNullOrWhiteSpace()
는 .NET 프레임워크의 System.String
클래스에서 사용할 수 있는 유용한 메서드로, PowerShell에서는 문자열 변수에서 호출하여 사용할 수 있습니다.
이 메서드는 문자열이 null이거나 빈 문자열이거나 공백 문자만으로 구성되어 있는지를 확인합니다. 문자열 변수가 실질적으로 비어 있는지를 확인하는 데 유용합니다. 공백이나 탭만 포함되어 있을 때도 마찬가지입니다.
아래 코드에서는 $myString
이라는 변수를 만들고 공백 문자(스페이스)만 포함된 문자열을 할당합니다.
그런 다음 [string]::IsNullOrWhiteSpace($myString)
메서드를 사용하여 $myString
이 null인지 또는 공백만 포함하는지를 확인합니다.
$myString = $null
if ([string]::IsNullOrWhiteSpace($myString)) {
Write-Host 'The string is null or contains only whitespace.'
}
출력:
The string is null or contains only whitespace.
조건이 true이므로 ($myString
이 null) 스크립트는 "The string is null or contains only whitespace."
라는 메시지를 출력합니다.
이 메서드는 문자열이 진정으로 비어 있는지 확인하려고 할 때 유용합니다. 공백이나 탭으로 인해 "빈"
것으로 보일 수 있습니다.
결론
PowerShell 스크립팅에서 $null
변수가 작동하는 방식을 이해하는 것은 중요합니다. 왜냐하면 이러한 변수는 다양한 상황에서 스크립트의 작동에 영향을 미칠 수 있기 때문입니다. 신뢰할 수 있는 스크립트를 작성하려면 $null
을 왼쪽에 배치하여 null 값을 올바르게 확인하는 것과 같은 모범 사례를 따르는 것이 좋습니다.
스크립팅에 익숙한 사람이든 초보자든 이러한 세부 사항을 아는 것은 PowerShell 사용 능력을 향상시키는 데 도움이 됩니다.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn