You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell简单数组索引取值输出结果与预期不符问题

问题诱因

PowerShell双引号内的字符串插值有默认解析规则:只会把$开头的连续合法变量名识别为插值对象,变量名后跟随的索引器、属性访问、方法调用等内容不会被纳入插值表达式范围。
你写的"$nameonly[4]"会被解析为两部分:

  1. 对$nameonly变量做字符串插值:数组转字符串时默认用空格拼接所有元素,你的数组索引0为空、索引1-9为A1到A9、索引10-19为初始化的空字符串,拼接后得到A1 A2 A3 A4 A5 A6 A7 A8 A9
  2. 字面量内容[4]会被直接当作普通字符串拼接在前述结果末尾,最终就输出了你看到的异常结果,根本没有触发索引4的元素读取逻辑。
修复方案

有两种常用改法,都能得到预期的A4输出:

  • 方法1:用$()子表达式运算符包裹完整的取值表达式,明确告诉PowerShell要执行整段逻辑后再插值,修改输出语句为:
    Write-Host "$($nameonly[4])"
    
  • 方法2:不需要额外做字符串插值,直接把数组元素作为参数传给Write-Host即可:
    Write-Host $nameonly[4]
    

附修改后可正常运行的完整代码:

$nameonly =  @("") * 20 

$i=1 
do 
{
    $nameonly[$i] = "A$i" 
    $i++
}
until ($i -eq 10)

Write-Host $nameonly[4]

注:你的现有逻辑里数组索引0始终为空值,是因为循环从$i=1开始计数,如果需要索引0也赋值,调整循环初始值即可,不影响本次索引4的取值结果。

内容的提问来源于stack exchange,提问作者BrandyPuff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 19:03:29