首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在bash中双重替换数组变量

如何在bash中双重替换数组变量
EN

Stack Overflow用户
提问于 2018-09-14 22:03:49
回答 2查看 257关注 0票数 1

我想使用shell脚本针对不同的体系结构交叉编译一组lib。

一组库:

代码语言:javascript
运行
复制
LIBS=(FOO ZOO)

特定于每个库的核心数组(此库将为其交叉编译)。

代码语言:javascript
运行
复制
FOO_CORES=(ARM_CM3 ARM_CM4 ARM_CR4)

ZOO_CORES=(ARM_CR4)

基本上,我希望看到这种情况的发生:

代码语言:javascript
运行
复制
  make FOO CORE=ARM_CM3
  make FOO CORE=ARM_CM4
  make FOO CORE=ARM_CR4

  make ZOO CORE=ARM_CR4

我可以运行一个for循环,它可以遍历库数组。但是我如何引用每个特定于库的核心数组呢?我可以使用双替换来获得每个特定于库的核心名称变量...但仅此而已!不确定双重替换是否也适用于数组。

代码语言:javascript
运行
复制
for lib in ${LIBS[@]};do
  eval "lib_name=${lib}_CORES"
  cores_list=${!lib_name}
  echo $lib_name $cores_list
done

输出:

代码语言:javascript
运行
复制
FOO_CORES ARM_CM3
ZOO_CORES ARM_CR4
EN

Stack Overflow用户

发布于 2018-09-14 22:10:09

出于间接参数扩展的目的,参数" name“由数组名称和所需索引组成。

代码语言:javascript
运行
复制
for lib in "${LIBS[@]}"; do
  a=${lib}_CORES
  t="$a[@]"
  printf '%s\n' "$a"
  printf ' %s\n' "${!t}"
done

产生

代码语言:javascript
运行
复制
FOO_CORES
 ARM_CM3
 ARM_CM4
 ARM_CR4
ZOO_CORES
 ARM_CR4
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52333632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档