Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将两行输出分配给bash中的两个不同变量_Bash_Amazon Web Services_Aws Iam - Fatal编程技术网

将两行输出分配给bash中的两个不同变量

将两行输出分配给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

我正在编写一个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中,如何将它们分配给自己的变量

可以使用参数替换在换行符上拆分字符串
${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;}