我希望能够将单个int传递给powershell脚本,并且能够判断何时没有传递变量。我的理解是,以下内容应该识别参数是否为空:
if (!$args[0]) { Write-Host "Null" }
else { Write-Host "Not null" }在我尝试将0作为int传递之前,它工作得很好。如果我使用0作为参数,Powershell会将其视为null。区分参数为空还是零值的正确方法是什么?
发布于 2013-09-04 15:35:37
您可以只测试$args变量或$args.count,看看有多少var传递给了脚本。
$args[0] -eq $null不同于$args[0] -eq 0和!$args[0]的另一点是。
发布于 2019-04-17 23:32:18
如果变量在param()中声明为整数,那么即使没有为参数指定值,它的值也将是'0‘。为了防止出现这种情况,您必须将其声明为可空:
param([AllowNull()][System.Nullable[int]]$Variable)这将允许您使用If ($Variable -eq $null) {}进行验证
发布于 2021-02-23 23:09:52
如果像我这样的用户来自Google,并且想知道如何处理空的命令行参数,这里有一个可能的解决方案:
if (!$args) { Write-Host "Null" }这将检查$args数组。如果要检查数组的第一个元素(即第一个cmdline参数),请使用OP中的解决方案:
if (!$args[0]) { Write-Host "Null" }https://stackoverflow.com/questions/18607788
复制相似问题