未设置变量的 If 语句

问题描述 投票:0回答:1

我对 if 语句有疑问。

If (($null -eq $success) -or ($success -eq $false)) {
  Write-Host "Hi!"
}

如果 $success 未定义(不存在),上述内容仍然会触发..

PS C:\> $success
PS C:\> $success -eq $false
False
PS C:\> $success -eq $true
False
PS C:\> $success = $false
PS C:\> $success -eq $false
True
PS C:\> $success -eq $true
False
PS C:\>

..因为未定义的变量既不是 $true 也不是 $false,因此它是 $false。

我希望未设置的变量不会“进入”If 语句,而当变量为 $false 时它会“进入”。我怎样才能实现这个目标?

powershell
1个回答
0
投票

要排除在给定变量不存在

时进入 
if 语句主体的情况,请使用 Test-Path
 调用,其路径基于由 
变量提供者公开的
Variable:
驱动器 :

if ((Test-Path Variable:success) -and $success -eq $false) { # ...
    
© www.soinside.com 2019 - 2024. All rights reserved.