我需要分几个步骤处理一些数据。
我首先在AWS中创建一个托管策略列表,然后将该列表放入一个数组中:
readarray -t managed_policies < <(aws iam list-attached-user-policies --user-name tdunphy --output json --profile=company-nonprod | jq -r '.AttachedPolicies[].PolicyArn')
但是随后我需要在脚本中向该数组添加更多信息。我的问题是,我可以使用readarray来做到这一点吗?还是只需要使用以下命令将数据添加到列表中即可:
managed_policies+=($(aws iam list-attached-group-policies --group-name grp-cloudops --profile=compnay-nonprod | jq -r '.AttachedPolicies[].PolicyArn'))
答案 0 :(得分:2)
我建议使用选项-O
附加到您的数组:
mapfile -t -O "${#managed_policies[@]}" managed_policies < <(aws ...)
答案 1 :(得分:1)
您也可以这样做:
readarray -t managed_policies < <(aws ...)
readarray -t tmp < <(aws ...)
managed_policies+=("${tmp[@]}")
答案 2 :(得分:0)
假设您可以立即调用aws
(并且给出的示例建议您可以,因为两组参数都是硬编码的),则只需要单个调用readarray
。 (该功能只是一些不必要的重构。)
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
的调用。)