将两行输出分配给bash中的两个不同变量
我正在编写一个Bash脚本,其中必须列出用户的AWS访问密钥,然后将它们分配给变量 一个用户可能有两个访问密钥。因此,用户需要两个变量来存储这些密钥 这是我到目前为止的路线:将两行输出分配给bash中的两个不同变量,bash,amazon-web-services,aws-iam,Bash,Amazon Web Services,Aws Iam,我正在编写一个Bash脚本,其中必须列出用户的AWS访问密钥,然后将它们分配给变量 一个用户可能有两个访问密钥。因此,用户需要两个变量来存储这些密钥 这是我到目前为止的路线: aws iam list-access-keys --user-name "$user_name" --profile="$aws_key" | grep -i accesskeyid | awk '{print $2}' | sed 's/"//g' 输出如下所示: AKIAJS7KDACQRQ5FJWA AKI
aws iam list-access-keys --user-name "$user_name" --profile="$aws_key" | grep -i accesskeyid | awk '{print $2}' | sed 's/"//g'
输出如下所示:
AKIAJS7KDACQRQ5FJWA
AKIAICDDTVTMEAB6RM5Q
在Bash中,如何将它们分配给自己的变量 可以使用参数替换在换行符上拆分字符串
${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}')
可以使用参数替换在换行符上拆分字符串
${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}')
您可以使用
--query
,作为aws命令的一部分进行处理:
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)
read-a vars您可以使用--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)
read-a vars{read var1;read var2;}{read var1;read var2;}