PowerShell의 널 변수

  1. PowerShell의 Null 변수 소개
  2. PowerShell에서 Null 변수의 영향
  3. PowerShell에서 Null 값 확인하기
  4. 결론
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 사용 능력을 향상시키는 데 도움이 됩니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Variable