迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

PowerShell 中的空变量

作者:迹忆客 最近更新:2024/02/01 浏览次数:

PowerShell 处理值为 null 的 $Null 对象,并且某些命令需要一些输出才能生成。如果有任何错误,它们会生成 null 值,并且还有助于脚本中的故障排除目的,以检查命令是否生成任何值。

本文讨论了 null 变量、在 PowerShell 中以不同语法使用 null 变量的影响以及检查 null 值的方法。


PowerShell 中的 Null 变量简介

我们可以将 NULL 视为未知或空值。例如,在你分配值或对象之前,变量为 NULL。

此变量可能很重要,因为某些命令需要一个值,如果该值为 NULL,则会生成错误。

$null 变量是 PowerShell 中用于表示 NULL 的自动变量。我们可以将它分配给变量,在比较中使用它,并将它用作集合中 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

对集合的影响

集合允许我们使用索引来访问值。如果我们尝试索引一个空集合,我们会得到这个错误: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 值时,我们总是将 $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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Windows PowerShell 中获取命令行参数

发布时间:2024/03/04 浏览次数:358 分类:编程语言

本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。

Windows PowerShell 中的 Base64 编码

发布时间:2024/03/04 浏览次数:332 分类:编程语言

本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。

在 Windows PowerShell 中写入输出

发布时间:2024/03/04 浏览次数:259 分类:编程语言

本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。

在 PowerShell 中注释代码

发布时间:2024/03/04 浏览次数:363 分类:编程语言

本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便