【发布时间】:2015-11-24 11:16:31
【问题描述】:
PowerShell 范围运算符生成值列表:
>1..6
1
2
3
4
5
6
如何生成包含特定步骤的值列表?例如,我需要一个从 1 到 10 的列表以及第 2 步。
【问题讨论】:
标签: powershell powershell-2.0 higher-order-functions array-map
PowerShell 范围运算符生成值列表:
>1..6
1
2
3
4
5
6
如何生成包含特定步骤的值列表?例如,我需要一个从 1 到 10 的列表以及第 2 步。
【问题讨论】:
标签: powershell powershell-2.0 higher-order-functions array-map
范围运算符本身不支持跳过/步进,但您可以使用Where-Object(如果您运行的是 4.0 或更高版本,则可以使用 Where() 方法)过滤掉每秒:
PS C:\> (1..10).Where({$_ % 2 -eq 0})
2
4
6
8
10
2.0 及以上版本:
PS C:\> 1..10 |Where-Object {$_ % 2 -eq 0}
2
4
6
8
10
【讨论】:
(1..10) | where ({$_ % 2 -eq 0}) 返回正确结果
Where() 方法不存在,但是是的,如前所述,Where-Object cmdlet 也可以正常工作
0 偏移,这是对范围内步骤的常见解释。在这种特定情况下,可能应该将答案中的条件更新为($_-<first-element>) % 2 -eq 0 或1..10 |Where-Object {($_-1) % 2 -eq 0}。