【问题标题】:loop through a collection of range of numbers in one line powershell在一行powershell中循环遍历一系列数字
【发布时间】:2021-03-15 14:49:28
【问题描述】:

我正在尝试找到一种方法来遍历 PowerShell 中的一系列数字。我在下面尝试过,它可以工作

foreach ($i in 1..3)
{
    "$i"
}

foreach ($i in 1,2,3)
{
    "$i"
}

但是当我在下面尝试时,我收到一条错误消息

foreach ($i in 1..3,4..8)
{
  "$i"
}

无法转换“System.Object[]”类型的“System.Object[]”值 键入“System.Int32”。在 line:1 char:1

  • $collection1 = 1..3,4..8
  •   + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
      + FullyQualifiedErrorId : ConvertToFinalInvalidCastException
    

有没有办法在 PowerShell 中循环遍历一系列数字。

【问题讨论】:

  • 添加带有+的两个范围数组。您的代码尝试构建一个数组数组。 [咧嘴]

标签: powershell


【解决方案1】:

错误的原因是

foreach ($i in 1..3,4..8)

将向 foreach 枚举器传递一个包含两个元素的数组。第一个元素是一个包含值 1、2、3 的数组,第二个元素也是一个包含值 4-8 的数组。但是,foreach 期望从集合中查找值,而不是其他集合(在本例中为数组)。

要为 foreach 获取一个数组,请创建两个数组并将它们相加。像这样,

$a1 = 1..3
$a2 = 4..8
$k = $a1+$a2

foreach($i in $k) {$i}           
1
2
3
4
5
6
7
8

或者,将范围括在括号中,以便将结果转换为单个数组:

foreach($i in (1..3),(4..8)) {$i}
1
2
3
4
5
6
7
8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2014-06-29
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多