我对这两件事之间的区别感到困惑:
$env:path
Run Code Online (Sandbox Code Playgroud)
和
function path {$env:path}
path
Run Code Online (Sandbox Code Playgroud)
根据get-member,两者都返回字符串.然而,匹配对两者都不起作用.
如果我在$ env:path上使用-match,它就像我期望的那样工作,返回true/false.但是如果我在路径上使用-match(新函数),那么它总是返回路径,忽略-match.
我很困惑,因为两个返回字符串,因此应该工作相同.该函数是否需要做一些特殊的事情来获得相同的结果?
大卫是对的.不同之处在于-match被视为路径函数的参数.所以,
$(path) -match "foo"
Run Code Online (Sandbox Code Playgroud)
要么
(path) -match "foo"
Run Code Online (Sandbox Code Playgroud)
同样有效.前者是子表达式,后者是嵌套管道(在这种情况下通常效果相同,但存在细微差别.)
校验:
ps> function path {$env:path; write-host "parameters: $args"}
ps> path -match "foo"
(env:path expanded)
parameters: -match foo
Run Code Online (Sandbox Code Playgroud)
-Oisin
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |