17

配列と二重引用符を囲む PowerShell で奇妙な動作が見つかりました。次のように、配列の最初の要素を作成して出力するとします。

$test = @('testing')
echo $test[0]

Output:
testing

すべて正常に動作します。しかし、二重引用符で囲むと、次のようになります。

echo "$test[0]"

Output:
testing[0]

$test 変数のみが評価され、配列マーカー [0] は文字通り文字列として扱われました。簡単な修正は、二重引用符で囲まれた配列変数の補間を避けるか、最初に別の変数に割り当てることです。しかし、この動作は設計によるものですか?

4

3 に答える 3

30

したがって、補間を使用している場合、デフォルトでは、totoの次の変数のみを補間します。したがって、これを行うと:

"$test[0]"

$ testを次の変数と見なし、これが配列であり、配列を表示する適切な方法がないことを認識したため、補間できないと判断し、文字列を文字列として表示するだけです。解決策は、補間するビットが開始する場所と終了する場所をPowerShellに明示的に指示することです。

"$($test[0])"

この動作は、補間に依存する代わりにフォーマットされた文字列を使用する主な理由の1つであることに注意してください。

"{0}" -f $test[0]
于 2012-02-08T15:47:24.683 に答える
10

そのような場合、あなたはしなければなりません:

echo "$($test[0])"

別の方法は、文字列フォーマットを使用することです

echo "this is {0}" -f $test[0]

これは、文字列のプロパティにアクセスする場合にも当てはまることに注意してください。のように"$a.Foo"-として書く必要があります"$($a.Foo)"

于 2012-02-08T15:48:41.940 に答える