正如标题所说,我在循环中使用函数、变量初始化和if语句作为条件时遇到了一些麻烦。然而,如果我只是突然调用函数,它确实工作得很好,这让我认为问题在于我如何调用函数,而不是函数本身,尽管我可能错了。
下面是我尝试调用的函数:
function checkAlphaNumerical {
param (
#First, the string to validate, then a string to append to the error message
$stringToValidate, $stringDesc
)
if ($stringToValidate -notmatch '^[a-z0-9]+$') {
Write-Output ("Invalid $($stringDesc)")
return $false
}
else {
return $true
}
}
由于我在函数的两个可能路径上都使用了return $true
和return $false
,Powershell控制台应该根据字符串值输出True
或False
。
下面是调用函数的唯一场景:
checkAlphaNumerical $testinput "test"
下面是三个不起作用的例子:
第一个
提前感谢您的帮助。
1条答案
按热度按时间gmxoilav1#
它没有按预期工作,因为当测试结果为false时,您的函数返回一个两元素对象数组:
当数组被转换为布尔值时,就像它作为测试条件时一样,它返回
$True
。将
write-Output
更改为Write-Warning
将在控制台上显示“Invalid....”消息,同时确保返回值仅为$False
。此外:Return
语句。将返回任何未使用的输出。$stringDesc
只是一个字符串变量,所以扩展字符串中不需要"...$($stringDesc)"
。所以你的函数的工作版本是:
输出量: