识别 Bash 数组的元素 - 确定 AWS 密钥是否已存在 90 天



我的 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

相反。(将数组扩展到其全部内容,每个单词一个元素,并在正文的循环中使用索引。

最新更新