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
,它将是一个空值(或空字符串)。
$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 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 powershell 的参数函数处理命令行参数,参数如何工作,我们如何使用 powershell 参数将值传递给参数,以及定义参数的基本方法是什么。
发布时间:2024/03/04 浏览次数:273 分类:编程语言
-
本教程将教你在 powershell 中向命令输出添加新行的不同方法。
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。windows powershell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
发布时间:2024/03/04 浏览次数:324 分类:编程语言
-
本文将讨论如何使用不同的 powershell 替换方法替换或删除字符、文本和单词。
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 windows powershell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 windows powershell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 windows powershell 命令打印它们。
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 windows powershell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 active directory 过滤器和 ldap 过滤器。