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

Bash Shell脚本动态变量名取值报错如何解决?

${${VEHICLE_TYPE}_PRICE}属于嵌套变量替换语法,Bash原生不支持该写法,因此会抛出Bad Substitution错误,你可以选择以下三种常用方案实现动态取值:

方案1:间接变量扩展(兼容性最好,Bash 2.0及以上版本均支持)

先拼接得到完整的目标变量名,再通过!前缀做间接取值:

# 拼接目标变量名
TARGET_VAR="${VEHICLE_TYPE}_PRICE"
# 间接取值
PRICE=${!TARGET_VAR}

方案2:eval实现(仅推荐变量内容可控的场景使用)

注意:如果VEHICLE_TYPE的值来自不可信输入,eval存在命令注入风险,谨慎使用:

PRICE=$(eval echo \$${VEHICLE_TYPE}_PRICE)

方案3:关联数组实现(优先推荐,可读性最高)

如果你的运行环境支持Bash 4.0及以上版本,使用关联数组存储映射关系比动态变量名更易维护,也避免了各类取值语法坑:

# 声明关联数组并初始化
declare -A PRICE_MAP
PRICE_MAP=(
  [CAR]=50000
  [BIKE]=20000
)
# 直接用变量作为key取值
PRICE=${PRICE_MAP[${VEHICLE_TYPE}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:27:04