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 があります。上記のように、これを作成するために new-variable を使用しています。興味深いのは、これをスクリプトから実行すると、最初の呼び出しで new-variable が機能しますが、配列内の他のすべての変数に対して "..." が返されることです。何がこれを引き起こしているのでしょうか?

4

2 に答える 2

2

Andy がコメントで既に指摘しているように、セミコロンで区切られたリストを作成するのではなく$arr1$arr2、 などの名前の変数をいくつか作成し、$tempを参照するだけ$arr1です。

コードを修正する方法は次のとおりです

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

New-Variableシジルの前に for を付けることはできないことに注意してください$変数名は、arr1コードで$arr1orなどとして参照している場合でも、 です(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 に答える