【发布时间】:2021-07-19 07:19:16
【问题描述】:
因为 bash 不支持“数组中的数组”, 我试图在调用数组时动态化变量名。
bash 版本:4.2
我使用了这种扩展方式:https://stackoverflow.com/a/18124325/9336478
#!/bin/bash
# data are pre-defined and type is determined later
declare -a data_male
declare -a data_female
data_male=(value1 value2)
data_female=(value3 value4)
type="male"
for value in ${${!data_$type}[@]};do
echo $value
done
它没有工作
line 20: ${${!data_$type}[@]} : bad substitution
我该如何解决这个问题?
【问题讨论】:
-
你使用的是哪个版本的 Bash?
-
@vdavid 我目前正在使用 4.2 编辑帖子
-
您不能像这样在单个步骤中嵌套扩展,您需要将变量设置为您想要扩展的内容(其中包括
[@]之类的内容以获取数组的所有元素)。类似data_type_contents="data_${type}[@]"; for value in ${!data_type_contents}; do ... -
您是否可以选择安装更新版本的
bash?
标签: arrays bash variable-names