首页 > 解决方案 > 将两行输出分配给bash中的两个不同变量

问题描述

我正在编写一个 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 中自己的变量?

标签: bashamazon-web-servicesaws-iam

解决方案


您可以使用参数替换在换行符上拆分字符串。获取最后一个换行符之前${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}')

推荐阅读