我正在编写一个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中将每个变量分配给自己的变量?
答案 0 :(得分: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}')
答案 1 :(得分:1)
您可以使用--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
。