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

Shell中如何根据FRUIT变量值输出对应水果颜色变量的值?

问题

已知变量FRUIT的值仅可为"APPLE"或"BANANA",且已定义以下变量:

APPLE_COLOR=red
BANANA_COLOR=yellow

想要在Shell中根据FRUIT的取值输出对应的颜色("red"或"yellow"),尝试执行echo "${"${FRUIT}_COLOR"}"时出现错误:-bash: "${"${FRUIT}_COLOR"}": bad substitution,请问该如何实现需求?

解决方法

bash不支持这种嵌套的变量展开语法,以下是几种可行的实现方式:

方法一:使用bash间接引用(推荐,简洁安全)

先拼接出目标变量名,再通过${!var}语法实现间接引用:

# 分步写法
COLOR_VAR="${FRUIT}_COLOR"
echo "${!COLOR_VAR}"

# 一行简化写法
echo "${!${FRUIT}_COLOR}"

方法二:使用eval命令(需谨慎)

通过eval解析拼接后的变量名,注意如果FRUIT的值不可控,可能存在命令注入风险:

eval echo "\${${FRUIT}_COLOR}"

方法三:使用case语句(最安全,适配所有场景)

明确匹配FRUIT的合法取值,同时可处理异常情况:

case "$FRUIT" in
    APPLE) echo "$APPLE_COLOR" ;;
    BANANA) echo "$BANANA_COLOR" ;;
    *) echo "未知水果类型" ;;
esac

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:53:17