我的 bash 脚本中有一行,用于提取 AWS 访问密钥以及为用户创建它们的日期。
aws iam list-access-keys --user-name $user_name --profile=prod | jq -r '.AccessKeyMetadata[] | (.AccessKeyId, .CreateDate)')
它输出如下信息:
AKIAI6Q5EQ53GONANGBA
2018-07-05T21:28:39Z
AKIAICDOHVTMEAB6RM5Q
2018-02-08T03:55:51Z
我尝试创建一个数组并为数组循环:
echo "User $user_name keys:"
user_keys=( $(aws iam list-access-keys --user-name $user_name --profile=kpmg-prod | jq -r '.AccessKeyMetadata[] | (.AccessKeyId, .CreateDate)' 'n') )
for i in "$user_keys"
do
echo "$user_keys"
done
但得到我的只是这个输出:
User my_aws_user keys:
AKIAI6Q5EQ53GONANGBA
我想将该命令的输出分配给数组。并在一行上打印出密钥和时间戳。并使用时间戳确定用户的密钥是否超过 90 天。
如果它超过 90 天,它将执行一些我已经解决的附加功能。我怎样才能做到这一点?
如果user_keys
是一个数组,则$user_keys
和${user_keys[0]}
是等效的。你想要
for i in "${user_keys[@]}"
do
echo "$i"
done
相反。(将数组扩展到其全部内容,每个单词一个元素,并在正文的循环中使用索引。