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

如何在Bash脚本中创建包含多变量/值的‘对象’

更易维护的角色属性管理方案

你现在用case语句的方式,确实会在新增角色时变得越来越繁琐,这里给你几个更适合的替代方案:

方案1:关联数组(Bash 4.0及以上支持)

用关联数组可以把每个角色的所有属性打包成独立的集合,新增角色只需要加一组数组定义就行,不用改逻辑分支:

# 定义角色关联数组
declare -A npc1=(
    [name]="NPC"
    [hp]=100
    [atk]=20
    [def]=10
)

declare -A npc2=(
    [name]="Bandit"
    [hp]=80
    [atk]=25
    [def]=8
)

# 调用属性示例
selected="npc1"
echo "角色名: ${!selected[name]}"
echo "生命值: ${!selected[hp]}"

方案2:函数初始化角色

如果需要动态创建角色,或者想复用初始化逻辑,用函数来封装属性赋值会更灵活:

# 初始化角色的函数,返回属性字符串
init_npc() {
    echo "$1 $2 $3 $4"  # 参数依次是name、hp、atk、def
}

# 创建角色并存储属性
npc1=$(init_npc "NPC" 100 20 10)
npc2=$(init_npc "Bandit" 80 25 8)

# 解析属性示例
read n1_name n1_hp n1_atk n1_def <<< "$npc1"
echo "NPC1 攻击力: $n1_atk"

方案3:配置文件存储(适合大量角色)

如果要加很多角色,把属性写到单独的配置文件里会更清晰,比如创建npcs.conf:

NPC 100 20 10
Bandit 80 25 8
Guard 120 18 15

然后用脚本读取并存储:

declare -A npcs
# 逐行读取配置文件
while read -r name hp atk def; do
    npcs["$name,hp"]=$hp
    npcs["$name,atk"]=$atk
    npcs["$name,def"]=$def
done < npcs.conf

# 使用属性示例
echo "Guard 的防御值: ${npcs["Guard,def"]}"

这几种方式都比case分支更易扩展,新增角色时不用修改核心逻辑,直接加定义或配置就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:00:30