gpt4 book ai didi

powershell - Powershell函数未按预期执行

转载 作者:行者123 更新时间:2023-12-03 00:48:26 24 4
gpt4 key购买 nike

我有以下函数,用于显示array中是否包含string中的任何单词:

function AnyOf ([string] $line, [string[]] $list)
{
Write-Output "AnyOf!"
foreach($item in $list)
{
if($line.Contains($item))
{
Write-Output "Found: $item"
return $true
}
}
return $false
}

并对此进行测试:
function main
{
[string[]]$a = @("user1", "user2")
$str = "user1 and user2"
$res = AnyOf($str, $a)
}

我希望它能看到 user1user2都被打印出来,但是什么也没打印。由于似乎从未执行 Write-Output "AnyOf!",因此似乎未调用该函数。

但是,当我执行时:
AnyOf($str, $a)

代替:
$res = AnyOf($str, $a)

我可以看到该函数已被调用,但似乎没有发生迭代……我在做什么错?

最佳答案

一些东西,

首先,不使用()调用powershell中的函数,您可以将其称为
AnyOf $str $a
标准约定是$<<nameOfFunction>> <<param1>> <<param2>>
其次,您的输出将被捕获为$res,因此不会打印到屏幕上,如果在$res的末尾添加main function,则会输出该输出。

因此,您的主要功能变为:

function main
{
[string[]]$a = @("user1", "user2")
$str = "user1 and user2"
$res = $AnyOf $str $a
$res #or just don't assign it to $res..
}


#to call main:
main

Output:

AnyOf!
Found: user1
True

如您在上面的输出中看到的,它永远不会找到 User2,因为一旦找到匹配项,您就使用 return $true,退出该函数。

要注意的另一件事是,当您 return $false$true实际成为输出流的一部分时,这可能不是您想要的,因为它可能导致意外的行为。

关于powershell - Powershell函数未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com