PowerShell - Değişkenin Boş Olup Olmadığını Kontrol Etme [5 Yol]


1. Giriş

PowerShell'de, bir değişkenin null (veya PowerShell terimleriyle $null) olup olmadığını kontrol etmek, özellikle komutların çıktısı, işlev dönüşleri veya kullanıcı girişinin işlenmesiyle uğraşırken komut dosyası oluşturmada temel bir görevdir.

Örneğin, veri tabanından veri depolayan bir değişken, hiçbir veri yoksa null olabilir.

Bu makalede, PowerShell'de değişkenin Null olup olmadığını kontrol etmenin farklı yollarını göreceğiz.

2. PowerShell'de null nedir?

null, kendisine atanmış hiçbir değeri olmayan değişkeni ifade eder ve PowerShell'de $null ile temsil edilir. Genellikle bir değerin yokluğunu veya var olmayan bir durumu tasvir etmek için kullanılır.

Powershell'de $null, null değerine sahip bir nesne olarak değerlendirilir. Tekil nesnedir, yani PowerShell ortamında yalnızca bir $null örneği vardır.

3. Eşitlik Operatörünü Kullanmak -eq

eq operatörü, bir değişkenin null olup olmadığını kontrol etmenin en basit ve önerilen yöntemidir.

Koşullu İfadeyi Kullan:

$myVariable = $null
if ($myVariable -eq $null) { 
    Write-Host "Variable is null."
}
else{
    Write-Host "Variable is not null."
}

Çıkış:

Variable is null.

Burada $myVariable -eq $null ifadesi, myVariable'ın null olup olmadığını kontrol eder. Doğruysa, Değişken boş değil yazdırır; aksi takdirde, Değişken boş değil yazdırır.

Bu yöntem, temel karşılaştırma işlemini gerçekleştirdiğinden hızlı ve etkilidir.

3.1 Veritabanı Çağrısından Elde Edilen Sonucun İşlenmesi

Veritabanı sorgusunun sonucu için boş denetim yapıyorsak, $null'dan farklı olan [DBNULL] döndürebilir.

Değişkenin $null veya DBNULL olup olmadığını kontrol etmek için özel bir fonksiyon yazalım.

Özel işlevi kullanma:

function IsNullOrDbNull {
    param (
        [Parameter(Mandatory=$true)]
        $Value
    )
    return $Value -eq $null -or [System.DBNull]::Value.Equals($Value)
}

# Example usage:
$myVar = $null  # This could be $null or a result from a database query
if (IsNullOrDbNull -Value $myVar) {
    Write-Host "Variable is null or DB null"
} else {
    Write-Host "Variable has a value"
}

Açıklama:

  • fonksiyon

    IsNullOrDbNull
    $Value
  • olup olmadığını kontrol eder

    $Value
    -eq
    [System.DBNull]::Value.Equals($Value)
  • $myVar = $null
    $null
    $myVar
    $myVar
  • IsNullOrDbNull
    $Value
    $null
    DBNULL
  • İfade

    if (IsNullOrDbNull -Value $myVar)
    IsNullOrDbNull
    $myVar

4. Koşullu İfadeyi Kullanmak

Koşullu ifade, özellikle birden fazla koşulla çalışırken değişkenin boş olup olmadığını kontrol etmek için kullanılabilir.

Koşullu ifadeyi kullanma:

$myVariable = $null
if ($myVariable) {
    Write-Host "Variable has a value"
} elseif ($myVariable -eq $null) {
    Write-Host "Variable is null"
}

Burada if bloğu, değişkenin doğruluk değerine sahip olup olmadığını kontrol eder, dolayısıyla değer 0, $olsa bile elseif bloğuna gider. false, boş bir String, boş bir dizi ve yalnızca $null değil, ve bu nedenle, değişken olup olmadığını elseif ifadesine açıkça kontrol ettik. $null.

5. Null-Coalescing Operatörlerini Kullanma [PowerShell 7.0 sürümlerinde desteklenir]

?? boş birleştirme operatörüdür. $null değilse sol taraftaki işleneni, aksi halde sağ taraftaki işleneni döndürür. Genellikle $null olduğunda değişkene varsayılan değer atamak istediğimizde kullanışlıdır.

Örnek yardımıyla görelim:

Boş Birleştirme Operatörlerini Kullanma:

$myVar = $null
$result = $myVar ?? "default value"
Write-Host $result  # Outputs 'default value'

$myVar'a bir değer atayalım ve çıktıyı kontrol edelim.

Boş Birleştirme Operatörlerini Kullanma:

$myVar = "Java2blog"
$result = $myVar ?? "default value"
Write-Host $result  # Outputs 'Java2blog'

6. Dize Değişkenleri için null olup olmadığının kontrol edilmesi

Dize değerleri için, değişkenin boş olup olmadığını kontrol etmek için iki yöntem daha kullanabiliriz; yani IsNullorEmpty() ve IsNullOrWhiteSpace().

Her birinin üzerinden geçelim:

6.1 IsNullorEmpty()'yi Kullanmak

IsNullorEmpty(), bir dize değişkeninin boş mu yoksa boş mu olduğunu kontrol eder. Temel dize kontrolleri için verimli ve daha kapsamlıdır.

Örnek yardımıyla görelim:

IsNullorEmpty() Yöntemini kullanın:

[string]::IsNullOrEmpty($newVariable)  

ÇIKTI:

 True

Yukarıdaki kodda, $newVariable adlı string değişkeninin null olup olmadığını belirlemek için IsNullOrEmpty() yöntemi kullanılıyor ve şunu elde ediyoruz:True; bu, belirtilen değişkenin null olduğu anlamına gelir. Şimdi verilen değişkenin boş olup olmadığını değerlendirmek için aşağıdaki kodu çalıştırın.

IsNullorEmpty() Yöntemini kullanın:

$newVariable=''
[string]::IsNullOrEmpty($newVariable)  

ÇIKTI:

True

Yukarıdaki kod çerçevesi ayrıca True değerini döndürdü; bu, $newVariable'ın boş olduğu anlamına gelir; aksi halde False sonucunu alırız. O halde $newVariable 'a aşağıda verildiği gibi bir değer atayalım ve çıktıyı gözlemleyelim.

IsNullorEmpty() Yöntemini kullanın:

$newVariable = 'Hello World'
[string]::IsNullOrEmpty($newVariable) 

ÇIKTI:

False

Bu sefer False sonucunu aldık çünkü $newVariable null veya boş değil, Merhaba Dünya dize türü değerini içeriyor kodu >.

6.2 IsNullOrWhiteSpace() Yöntemini Kullanma

belirtilen dize değişkeninin null, boş olup olmadığını veya yalnızca boşluk karakterleri içerip içermediğini kontrol etmek için IsNullOrWhiteSpace() yöntemini kullanabiliriz.

IsNullOrWhiteSpace() Yöntemini kullanın:

[string]::IsNullOrWhiteSpace($Variable)

ÇIKTI:

True

Bu yaklaşım, IsNullorEmpty() yöntemini kullandığımız önceki yaklaşıma benzer, tek bir fark dışında, yalnızca belirtilen değişkenin null veya boş olduğunu söylemekle kalmaz, aynı zamanda Verilen değişkenin yalnızca boşluk karakterleri içerip içermediğini bildirir.

Verilen değişken null ise, boşsa veya bir boşluk karakteri içeriyorsa IsNullOrWhiteSpace() yöntemi True değerini döndürür; aksi halde Yanlış. Burada null, $Variable'a henüz herhangi bir değer atanmadığı anlamına gelir; boş, boş bir dizeyle ayarlandığı anlamına gelir ve üçüncü senaryoda yalnızca boşluk karakterleri bulunur.

Tüm bu durumları anlamak için başka bir örnek görelim.

IsNullOrWhiteSpace() Yöntemini kullanın:

[string]::IsNullOrWhiteSpace($Variable)

$Variable=''
[string]::IsNullOrWhiteSpace($Variable)

$Variable='        '
[string]::IsNullOrWhiteSpace($Variable)

$Variable='How are you?'
[string]::IsNullOrWhiteSpace($Variable)

çıktı:

True
True
True
False

İlk olarak, $Variable başlangıçta başlatılmadığı, ardından boş bir dizeyle atandığı ve üçüncüsü yalnızca boşluk karakterlerini tuttuğu için üç True değeri elde ettik. Son olarak, $Variable'a Nasılsın? atandığı için yalnızca bir False aldık.

Not: Bu yöntem yalnızca PowerShell 3.0 ve üzeri sürümlerde geçerlidir.

7. Koleksiyonlarda $null İşleme

Diziler veya listeler gibi koleksiyonlarla uğraşırken $null öğelerinin kontrol edilmesi, koleksiyonda yineleme yapılmasını gerektirir.

Koleksiyonlarda boş değer kontrol ediliyor:

$myArray = @(1, $null, 3)
$nullItem = $myArray -contains $null

if ($nullItem) {
    Write-Host "Array contains null value"
} else {
    Write-Host "Array does not contain null value"
}

Çıkış:

Array contains null value

-İçerir operatörü, dizinin öğe içerip içermediğini kontrol eder.

Yukarıdaki kod, dizinin herhangi bir $null değeri içerip içermediğini kontrol eder. Örneğimizde $myArray $null değerini içeriyor, dolayısıyla çıktı Array null değer içeriyor şeklinde oluyor.

8. Sonuç

Bu yazımızda PowerShell'de değişkenin null olup olmadığını kontrol etmenin yollarını tartıştık.

Eşitlik operatörü (-eq) basit bir kontrol sağlar, koşullu ifadeler ise karmaşık senaryolar için daha fazla esneklik sunar.

Null birleştirme operatörü (??), özellikle varsayılan değerleri atarken $null değerlerini işlemenin modern ve etkili bir yoludur.

IsNullorEmpty() ve IsNullOrWhiteSpace() yöntemleri özellikle dize değişkenleri için kullanışlıdır ve daha kapsamlı bir kontrol sunar.

İlgili makaleler