Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 函数空返回值的测试_Powershell_Null - Fatal编程技术网

Powershell 函数空返回值的测试

Powershell 函数空返回值的测试,powershell,null,Powershell,Null,(编辑)一个空函数实际上返回一个null,这让我误入歧途,把这个问题留在这里作为提醒 其中$null不会将其剪切。我的场景最简单的解释是一个片段,我有一个别人编写的函数 function PositiveInt([string]$value) { if ([int]($value) -ge 0) {[int]$value} } 在负数情况下不返回任何内容,如果输入不是数字字符串,则抛出。在否定的情况下,我如何测试回报率?我试过这个 if ($null -eq (PositiveInt

(编辑)一个空函数实际上返回一个null,这让我误入歧途,把这个问题留在这里作为提醒

其中$null不会将其剪切。我的场景最简单的解释是一个片段,我有一个别人编写的函数

function PositiveInt([string]$value) { 
    if ([int]($value) -ge 0) {[int]$value}
}
在负数情况下不返回任何内容,如果输入不是数字字符串,则抛出。在否定的情况下,我如何测试回报率?我试过这个

if ($null -eq (PositiveInt -1)) {
    write-host "not positive :)"
}
但它显然不起作用,因为no返回值不等于$null。如何测试函数或表达式是否根本不返回任何内容?不要尝试修复我设计的函数,它缺少我想要测试的“$empty”(原文如此),但不能,因为powershell绑定并不要求函数甚至表达式实际返回任何内容

# hacky unclear solution proposed
$temp = @(PositiveInt -1)
if ($temp.length -eq 0) {
    write-host "not positive :)"
}
我从这个帖子中得到了一些灵感。但我想我问的是另一个问题。 除了铸造到阵列的解决方法之外,还有更干净的方法吗


(编辑)必须承认某些环境因素或在实际代码上下文中起作用,在PS 5.1中,正如@AnsgarWiechers指出的那样,函数调用返回$null。

您可以尝试以下方法:

if ((PositiveInt -1) -eq $null) {
    write-host "not positive :)"
}
你喜欢这个吗

if ( [string]::IsNullOrEmpty( (PositiveInt -1) ) ) {
    write-host "not positive :)"
}
您可以使用检查结果是否成功转换为整数:

if((正输入'-1')-isnot[int]){
写入主机“负”
}

事实上,函数或子表达式的“无返回值”并不等于
$null
@AnswarWiechers这个问题是因为如果($null-eq(PositiveInt-1)){“Yay”}不产生“Yay”-它可能在powershell 4或powershell 5中工作。但不是在我的版本中-因此问题。应该是这样,但我觉得我需要以某种方式包装函数调用。我将在另一台机器上再试一次,并获得一些分数。因为它在这台计算机上工作得很好。(Posh v3)我希望这个问题不是一个哑巴——在这种情况下,我还必须进行编辑:)那么还有其他问题。即使在PowerShell v2上,这种比较也能正常工作。必须承认某些环境因素或实际的代码上下文在起作用,如@AnsgarWiechers指出的,在PS 5.1中,函数调用返回$null。问题:阿门德金达看起来很粗鲁。但是,它正在针对[string]$null进行测试,对于soem rerason,它在powershell v2或v3中不起作用-目前不确定是哪个。