我尝试输入类似的内容:
$test = ("c2","d8","e9"),(4,1,9)
(0..2) | % { "$test[0][$_] $test[1][$_]" }
我希望它能输出:
c2 4
d8 1
e9 9
但我得到了这个:
System.Object[] System.Object[][0][0] System.Object[] System.Object[][1][0]
System.Object[] System.Object[][0][1] System.Object[] System.Object[][1][1]
System.Object[] System.Object[][0][2] System.Object[] System.Object[][1][2]
获得所需输出的正确方法是什么?
答案 0 :(得分:3)
您可以直接在字符串中使用变量,但是当您需要展开更复杂的内容(如属性,数组中的项或其他表达式)时,您需要使用子表达式$()
$test = ("c2","d8","e9"),(4,1,9)
(0..2) | % { "$($test[0][$_]) $($test[1][$_])" }
c2 4
d8 1
e9 9
答案 1 :(得分:2)
或者您可以使用字符串连接:
$test = ("c2","d8","e9"),(4,1,9)
(0..2) | % {$test[0][$_] + " " + $test[1][$_]}
输出:
c2 4
d8 1
e9 9
答案 2 :(得分:1)
您需要将它们放在子表达式中。原因是,当它在双引号内推断变量时,它从美元符号开始,并在有效变量名称的末尾停止外推。 [0]不是变量名的一部分,所以将它包装在$()中并且它可以正常工作:
$test = ("c2","d8","e9"),(4,1,9)
(0..2) | % { "$($test[0][$_]) $($test[1][$_])" }