gpt4 book ai didi

powershell - 对为什么 PowerShell 对待函数不同于子项感到困惑,即使类型相同

转载 作者:行者123 更新时间:2023-12-02 07:53:47 27 4
gpt4 key购买 nike

我对这两件事之间的区别感到困惑:

$env:path

function path {$env:path}
path

根据 get-member,两者都返回字符串。然而 -match 对两者的作用不同。

如果我在 $env:path 上使用 -match,它会像我预期的那样工作,返回 true/false。但是,如果我在路径(新函数)上使用 -match,那么它总是返回路径,忽略 -match。

我很困惑,因为两者都返回字符串,因此应该工作相同。该函数是否需要做一些特殊的事情才能获得相同的结果?

最佳答案

大卫是对的。不同之处在于 -match 被视为路径函数的参数。所以,

$(path) -match "foo"

(path) -match "foo" 

同样有效。前者是一个子表达式,后者是一个嵌套的管道(这种情况下通常效果相同,但有细微差别。)

验证:

ps> function path {$env:path; write-host "parameters: $args"}
ps> path -match "foo"
(env:path expanded)
parameters: -match foo

-奥伊辛

关于powershell - 对为什么 PowerShell 对待函数不同于子项感到困惑,即使类型相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128872/

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