0

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

代码:

$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 ,其中包含我要创建的以分号分隔的变量/值列表。正如您在上面看到的,我正在使用新变量来创建它。有趣的是,当我从脚本运行它时,新变量适用于第一次调用,但随后我得到数组中所有其他变量的“...”。知道可能是什么原因造成的吗?

4

2 回答 2

2

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

修复代码的一种方法是

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

请注意,New-Variable您不能为$印记添加前缀。变量名称arr1,即使您在代码中将其称为or$arr1(gv arr1).Value其他名称。

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

你也可以这样做

$arr1 = '(1,2,3)'
$arr2 = '(4,5,6)'
...
于 2012-05-21T06:29:06.400 回答
0

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

于 2012-05-22T01:01:37.933 回答