0

我正在编写一个 Bash 脚本,我必须在其中列出用户的 AWS 访问密钥,然后将它们分配给变量。

一个用户可能有两个访问密钥。因此,用户将需要两个变量来存储这些密钥。

这是我到目前为止的行:

aws iam list-access-keys --user-name "$user_name" --profile="$aws_key"  | grep -i accesskeyid | awk '{print $2}' | sed 's/"//g'

输出将是这样的:

 AKIAJS7KDACQRQ5FJWA
 AKIAICDDTVTMEAB6RM5Q

如何将这些中的每一个分配给 Bash 中自己的变量?

4

2 回答 2

2

您可以使用参数替换在换行符上拆分字符串。获取最后一个换行符之前${variable%$'\n'*}的值的部分,并获取第一个换行符之后的部分。$variable${variable#*$'\n'}

顺便说一句,Awk 通常可以做任何事情grep并且sed可以做。

variable=$(aws iam list-access-keys --user-name "$user_name" --profile="$aws_key"  |
awk 'tolower($0) ~ /accesskeyid/{gsub(/\"/,""); print $2}')
于 2018-06-04T18:12:32.167 回答
1

您已经可以使用 aws 命令将处理作为 aws 命令的一部分进行--query

aws iam list-access-keys --user-name "$user_name" --profile="$aws_key" \
    --query 'AccessKeyMetadata[*].AccessKeyId' --output text

在制表符分隔的行中返回 ID,因此您可以执行类似的操作

read -a vars <<< \
    $(aws iam list-access-keys --user-name "$user_name" --profile="$aws_key" \
    --query 'AccessKeyMetadata[*].AccessKeyId' --output text)

你得到一个vars包含你的变量的数组。

于 2018-06-04T20:09:23.167 回答