PowerShell在双引号内插值时输出数组项

我在PowerShell周围的数组和双引号中发现了一些奇怪的行为.如果我在数组中创建并打印第一个元素,例如:

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

Output:
testing

一切正常.但如果我在它周围加上双引号:

echo "$test[0]"

Output:
testing[0]

仅评估了$test变量,并且数组标记[0]被字面上视为字符串.简单的解决方法是避免在双引号中插入数组变量,或者首先将它们分配给另一个变量.但是这种行为是设计的吗?

最佳答案
所以当你使用插值时,默认它只插入toto中的下一个变量.所以当你这样做时:

"$test[0]"

它将$test视为下一个变量,它意识到这是一个数组并且它没有很好的方式来显示数组,所以它决定它不能插入并只是将字符串显示为字符串.解决方案是明确告诉PowerShell要插入的位在何处开始以及停止的位置:

"$($test[0])"

请注意,此行为是我使用格式化字符串而不是依赖插值的主要原因之一:

"{0}" -f $test[0]

转载注明原文:PowerShell在双引号内插值时输出数组项 - 代码日志