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

如何在Bash中基于字符串直接查找array对应值(无需循环)

Bash 实现无需循环直接访问键值对的方法

你当前使用的是普通索引数组,Bash中普通数组仅支持数字索引,当你用${ARRAY["jack"]}时,字符串"jack"会被强制转换为数字0,因此取到了数组的第一个元素kevin:42,再通过#*:截取后得到42,这就是输出不符合预期的原因。

要实现无需循环直接通过键访问值的需求,Bash 4.0及以上版本支持关联数组(哈希表),这是最直接的解决方案:

#!/bin/bash

# 声明关联数组(必须用declare -A)
declare -A USER_AGES

# 方式1:逐个给键赋值
USER_AGES["kevin"]=42
USER_AGES["jack"]=45
USER_AGES["tom"]=22

# 方式2:一次性初始化所有键值对
# USER_AGES=([kevin]=42 [jack]=45 [tom]=22)

# 直接通过键获取对应值
echo printing jack value: ${USER_AGES["jack"]}

运行这段代码会直接输出:

printing jack value: 45

注意事项

  • 必须确保你的Bash版本在4.0及以上,可通过bash --version查看版本号;低版本Bash不支持关联数组特性。
  • 关联数组的键可以是任意字符串,访问和赋值时都使用数组名["键名"]的格式。

内容的提问来源于stack exchange,提问作者cosmos-1905-14

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:20