当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell - 检查变量是否为空 [5 种方法]

作者:精品下载站 日期:2024-12-14 05:24:37 浏览:16 分类:玩电脑

PowerShell - 检查变量是否为空 [5 种方法]


[玩转系统] PowerShell - 检查变量是否为空 [5 种方法]

一、简介

在 PowerShell 中,检查变量是否为 null(或用 PowerShell 术语来说,$null)是脚本编写中的一项基本任务,尤其是在处理命令输出、函数返回或处理用户输入时。

例如,如果不存在数据,则存储数据库数据的变量可能为空。

在本文中,我们将看到在 PowerShell 中检查变量是否为 Null 的不同方法。

2. PowerShell 中的 null 是什么?

null 指的是没有赋值的变量,在 PowerShell 中用 $null 表示。它通常用来描述缺乏价值或不存在的状态。

在 Powershell 中,$null 被视为值为 null 的对象。它是单例对象,意味着在 PowerShell 环境中只有一个 $null 实例。

3. 使用相等运算符-eq

eq 运算符是检查变量是否为 null 的最直接且推荐的方法。

使用条件语句:

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

输出 :

Variable is null.

此处,表达式 $myVariable -eq $null 检查 myVariable 是否为 null。如果为 true,则输出 Variable is null;否则,输出 Variable is not null

此方法快速高效,因为它执行基本的比较操作。

3.1 处理数据库调用结果

如果我们对数据库查询的结果进行空检查,它可能会返回与$null不同的[DBNULL]

让我们编写一个自定义函数来检查变量是否为 $nullDBNULL

使用自定义函数:

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"
}

说明:

  • 功能

    IsNullOrDbNull
    $Value
  • 它检查是否

    $Value
    -eq
    [System.DBNull]::Value.Equals($Value)
  • $myVar = $null
    $null
    $myVar
    $myVar
  • IsNullOrDbNull
    $Value
    $null
    DBNULL
  • 表达式

    if (IsNullOrDbNull -Value $myVar)
    IsNullOrDbNull
    $myVar

4. 使用条件语句

条件语句可用于检查变量是否为空,特别是在处理多个条件时。

使用条件语句:

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

这里,if块检查变量是否具有真值,因此即使值为0,它也会转到elseif块,$false,一个空字符串,一个空数组,而不仅仅是 $null,这就是原因,我们在 elseif 语句中明确检查变量是否为$null

5. 使用空合并运算符 [ PowerShell 7.0 版本支持]

?? 是空合并运算符。如果左侧操作数不是 $null,则返回左侧操作数,否则返回右侧操作数。当我们想要为 $null 的变量分配默认值时,它通常很有用。

让我们借助示例来看看:

使用空合并运算符:

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

让我们为 $myVar 分配一些值并检查输出。

使用空合并运算符:

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

6. 检查字符串变量是否为 null

对于字符串值,我们可以使用另外两个方法,即 IsNullorEmpty()IsNullOrWhiteSpace() 来检查变量是否为 null。

让我们逐一讨论一下:

6.1 使用 IsNullorEmpty()

IsNullorEmpty() 检查字符串变量是否为 null 或空。对于基本的字符串检查来说它是高效且更全面的。

让我们借助示例来看看:

使用 IsNullorEmpty() 方法:

[string]::IsNullOrEmpty($newVariable)  

输出 :

 True

在上面的代码中,使用IsNullOrEmpty()方法来判断名为$newVariable的字符串变量是否为null,得到True,表示指定变量为null。现在,执行以下代码来评估给定变量是否为空。

使用 IsNullorEmpty() 方法:

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

输出 :

True

上面的代码栅栏也返回了True,意味着$newVariable为空;否则,我们会得到False。因此,让我们为 $newVariable 分配一个值,如下所示,并观察输出。

使用 IsNullorEmpty() 方法:

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

输出 :

False

这次,我们得到 False,因为 $newVariable 不是 null 或空,而是包含字符串类型值,Hello World.

6.2 使用IsNullOrWhiteSpace()方法

我们可以使用 IsNullOrWhiteSpace() 方法来检查指定的字符串变量是否为 null、空或仅包含空格字符。

使用 IsNullOrWhiteSpace() 方法:

[string]::IsNullOrWhiteSpace($Variable)

输出 :

True

这种方法与上一种方法类似,我们使用了 IsNullorEmpty() 方法,但有一点不同,它不仅告诉指定变量为 null 或空,而且通知给定变量是否仅包含空格字符。

如果给定变量为 null、空或包含 空格 字符,则 IsNullOrWhiteSpace() 方法返回 True;否则,False。这里,null 表示 $Variable 尚未分配任何值,empty 表示设置了空字符串,第三种情况仅包含空格字符。

让我们看另一个例子来理解所有这些情况。

使用 IsNullOrWhiteSpace() 方法:

[string]::IsNullOrWhiteSpace($Variable)

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

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

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

输出 :

True
True
True
False

首先,我们得到了三个 True 值,因为 $Variable 在开始时没有初始化,然后分配了一个空字符串,第三个值仅包含空白字符。最后,我们只收到一个 False,因为 How are you? 已分配给 $Variable

注意:此方法仅适用于PowerShell 3.0及以上版本。

7. 处理集合中的$null

处理数组或列表等集合时,检查 $null 项需要遍历集合。

检查集合中的 null:

$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"
}

输出 :

Array contains null value

-Contains 运算符检查数组是否包含元素。

上面的代码检查数组是否包含任何 $null 值。在我们的示例中,$myArray 包含 $null 值,因此输出为 Array contains null value

八、结论

在本文中,我们讨论了在 PowerShell 中检查变量是否为 null 的方法。

相等运算符 (-eq) 提供了简单的检查,而条件语句为复杂场景提供了更大的灵活性。

空合并运算符 (??) 是处理 $null 值的现代且高效的方法,尤其是在分配默认值时。

IsNullorEmpty()IsNullOrWhiteSpace() 方法对于字符串变量特别有用,可以提供更全面的检查。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯