[玩转系统] PowerShell - 检查变量是否为空 [5 种方法]
作者:精品下载站 日期:2024-12-14 05:24:37 浏览:16 分类:玩电脑
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]
。
让我们编写一个自定义函数来检查变量是否为 $null
或 DBNULL
。
使用自定义函数:
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()
方法对于字符串变量特别有用,可以提供更全面的检查。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag