首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将元素添加到现有的Array Bash中

将元素添加到现有的Array Bash中
EN

Stack Overflow用户
提问于 2018-10-31 20:31:33
回答 3查看 2.4K关注 0票数 13

我需要分几个步骤处理一些数据。

我首先在AWS中创建一个托管策略列表,并将该列表放入一个数组中:

代码语言:javascript
复制
readarray -t managed_policies < <(aws iam list-attached-user-policies --user-name tdunphy  --output json --profile=company-nonprod | jq -r '.AttachedPolicies[].PolicyArn')

但是,我需要在后面的脚本中向该数组添加更多信息。我的问题是,我可以使用readarray来完成这个任务吗?还是只需要使用命令将数据修正到列表中,例如:

代码语言:javascript
复制
managed_policies+=($(aws iam list-attached-group-policies --group-name grp-cloudops --profile=compnay-nonprod | jq -r '.AttachedPolicies[].PolicyArn'))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-31 20:42:15

我建议使用选项-O添加到数组中:

代码语言:javascript
复制
mapfile -t -O "${#managed_policies[@]}" managed_policies < <(aws ...)
票数 22
EN

Stack Overflow用户

发布于 2018-10-31 20:45:41

您也可以这样做:

代码语言:javascript
复制
readarray -t managed_policies < <(aws ...)
readarray -t tmp < <(aws ...)
managed_policies+=("${tmp[@]}")
票数 3
EN

Stack Overflow用户

发布于 2018-10-31 20:51:56

假设您可以立即调用aws (您给出的示例表明可以这样做,因为这两组参数都是硬编码的),您只需要对readarray进行一次调用。(该函数只是一些不必要的重构。)

代码语言:javascript
复制
get_policies () {
  aws iam list-attached-user-policies --output json --profile company-nonprod "$@"
}

readarray -t managed_policies < <(
 { get_policies --user-name tdunphy
   get_policies --group-name grp-cloudops
 } | jq -r '.AttachedPolicies[].PolicyArn')

(非主题,但也可以省略对jq的调用,方法是对aws使用适当的参数来适当地调整输出。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53091505

复制
相关文章

相似问题

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