如何在Powershell中区分空参数和零值参数?

Rya*_*ies 3 powershell null if-statement zero

我希望能够将单个int传递给powershell脚本,并且能够告诉何时没有传递任何变量.我的理解是,以下内容应该确定参数是否为null:

if (!$args[0]) { Write-Host "Null" }
else { Write-Host "Not null" }
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我尝试将0作为int传递.如果我使用0作为参数,Powershell会将其视为null.什么是正确的方法来区分参数是空的还是零值?

JPB*_*anc 8

您可以只测试$args变量或$args.count查看传递给脚本的变量数量.

另一件事$args[0] -eq $null是从不同的 $args[0] -eq 0!$args[0].

  • 如果它解释了相等性检查之间的差异,这个答案会好得多。我听说它们是不同的,但我不知道为什么。它应该告诉我如何正确检查空/空/零参数。 (3认同)

Tim*_*imo 5

如果像我这样的用户来自 Google 并且想知道如何处理空命令行参数,这里有一个可能的解决方案:

if (!$args) { Write-Host "Null" }
Run Code Online (Sandbox Code Playgroud)

这会检查 $args 数组。如果要检查数组的第一个元素(即第一个命令行参数),请使用OP中的解决方案:

if (!$args[0]) { Write-Host "Null" }
Run Code Online (Sandbox Code Playgroud)