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