在循环中使用new-variable的问题

时间:2012-05-21 04:26:46

标签: powershell

所以,我有一个有趣的问题,我没有运气解决。我需要创建一堆动态数组变量。

代码:

$temp = 'arr1=(1,2,3);arr2=(4,5,6);arr3=(7,8,9)'
foreach($item in $temp.split(";")){
    $var = $item.split("=")
    New-variable $var[0] $var[1]
    get-variable $var[0]
}

结果:

$arr1 (1,2,3)
...   (4,5,6)
...   (7,8,9)

我有变量$ temp,它包含一个以分号分隔的我想要创建的变量/值列表。正如您在上面所看到的,我使用new-variable来创建它。有趣的是,当我从脚本运行它时,new-variable适用于第一次调用,但后来我得到了数组中所有其他变量的“...”。知道可能导致这种情况的原因吗?

2 个答案:

答案 0 :(得分:2)

正如Andy在评论中已经指出的那样,你不是在创建一个以分号分隔的列表,而是创建了几个名为$arr1$arr2等的变量和$temp只是引用$arr1

修复代码的方法是

$temp = 'arr1=(1,2,3);arr2=(4,5,6);...'

请注意,对于New-Variable,您不能在$ sigil前加上前缀。 变量名称arr1,即使您在代码中将其称为$arr1(gv arr1).Value或其他。

但这是在PowerShell中编写代码的一种非常奇怪的方式。你只是没有真正提供足够的细节,所以我们实际上知道你在做什么。

你也可以这样做

$arr1 = '(1,2,3)'
$arr2 = '(4,5,6)'
...

答案 1 :(得分:0)

不确定为什么会这样,但是当我分裂我的字符串时,我在我的数组中得到了一些随机的ascii字符。感谢PowerGUI能够看到这一点!解决方案是在使用之前修剪弦。 (即$ var [0] .Trim())