$myarray -mat-6ren">
gpt4 book ai didi

arrays - -match…和|之间的区别其中{$ _ -match…}

转载 作者:行者123 更新时间:2023-12-03 00:36:05 27 4
gpt4 key购买 nike

我已经尝试了好一阵子了,但是我似乎无法弄清楚这两者之间的区别。特别是,与数据数组有关的差异:

PS C:>$myarray = "a", "ab", "abc"
PS C:>$myarray -match "b"
ab
abc
PS C:>$myarray | where {$_ -match "b"}
ab
abc

谁能帮助我了解这两种选择之间的区别(如果有)吗?

谢谢!

最佳答案

至少没有结果。如果将比较运算符应用于数组,则返回一个(这意味着将其应用于每个数组元素,并将返回返回$true的那些元素)。另一个方法是将数组传递给进行过滤的cmdlet。结果是一样的。

您可以发挥创造力,并通过另一种方式解决同一件事:

$myarray | foreach { if ($_ -match 'b') { $_ } }

但是请注意,当左操作数不是数组时,结果是不同的:
PS Home:\> ,'b' -match 'b'
b
PS Home:\> 'b' -match 'b'
True

因此,如果您不确定某个变量是否为数组,则可以强制将其设为一个:
@($foo) -match 'b'

或使用 Where-Object做正确的事情。

就个人而言,我倾向于在控制台上编写PowerShell代码时直接使用运算符。它也使等效的 grep相当简洁:
(gc file) -match 'regex'

(不过,我确实应该更频繁地开始使用 Select-String。)

但是在编写需要健壮的脚本或其他必须读取/维护的脚本时,我对 Where-Object使用“正确”的方式。

关于arrays - -match…和|之间的区别其中{$ _ -match…},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780205/

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