我想在PowerShell中将一些数据添加到一个数组变量中。但它显示错误,如“索引超出数组的范围”。我所拥有的是:
$test = @()
for ($i = 0 ; $i -lt 20; $i++)
{
$test[$i] = $i
}
$test
显示“索引超出数组范围的错误。
PowerShell中是否有任何方法可以将数据存储到数组变量中。
答案 0 :(得分:2)
$test = @()
是一个动态大小的数组。如果你想使用它,你需要在循环中追加它:
$test = @()
for ($i = 0 ; $i -lt 20; $i++) {
$test += $i
}
或(更好):
$test = @(for ($i = 0 ; $i -lt 20; $i++) {
$i
})
或(甚至更好,至少在这种特殊情况下):
$test = 0..19
如果要通过索引访问分配值,则需要使用固定大小定义数组:
$test = New-Object Object[] (20)
for ($i = 0 ; $i -lt 20; $i++) {
$test[$i] = $i
}
或使用所需数量的元素预加载动态大小的数组:
$test = 1..20 | ForEach-Object { $null }
for ($i = 0 ; $i -lt 20; $i++) {
$test[$i] = $i
}
答案 1 :(得分:0)
试试这个 -
$test = @()
for($i = 0 ; $i -lt 20; $i++)
{
$test += $i
}
$test
$test[$i]
是数组的元素之一,显然如果你试图在那里存储20个元素,它必然会给你ArrayOutOfBounds
异常。使用+=
运算符将值添加到现有数组。
完成元素存储后,您可以访问数组的各个元素,如$test[0]..$test[19]
(因为数组的索引从0
开始)。