我希望能够将单个 int 传递给 powershell 脚本,并且能够判断何时没有传递任何变量。我的理解是,以下内容应确定参数是否为空:
if (!$args[0]) { Write-Host "Null" }
else { Write-Host "Not null" }
这工作正常,直到我尝试将 0 作为 int 传递。如果我使用 0 作为参数,Powershell 将其视为 null。能够区分参数为空还是具有零值的正确方法是什么?
我希望能够将单个 int 传递给 powershell 脚本,并且能够判断何时没有传递任何变量。我的理解是,以下内容应确定参数是否为空:
if (!$args[0]) { Write-Host "Null" }
else { Write-Host "Not null" }
这工作正常,直到我尝试将 0 作为 int 传递。如果我使用 0 作为参数,Powershell 将其视为 null。能够区分参数为空还是具有零值的正确方法是什么?
您可以只测试$args
变量或$args.count
查看传递给脚本的变量数量。
另一件事与和$args[0] -eq $null
不同 。$args[0] -eq 0
!$args[0]
如果变量被声明param()
为整数,那么即使没有为参数指定值,它的值也将为“0”。为防止您必须将其声明为可为空:
param([AllowNull()][System.Nullable[int]]$Variable)
这将允许您验证If ($Variable -eq $null) {}
如果像我这样的用户来自谷歌,想知道如何处理空的命令行参数,这里有一个可能的解决方案:
if (!$args) { Write-Host "Null" }
这将检查 $args 数组。如果要检查数组的第一个元素(即第一个 cmdline 参数),请使用 OP 中的解决方案:
if (!$args[0]) { Write-Host "Null" }