当我使用
第一个月
我得到以下输出:
ABCDEF
123456
AAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBBAAAAAABBBBB
字符串
三条不同的线和不同的键。
我想将这些输出作为导出导出:
export AWS_ACCESS_KEY_ID=<the first line of the output>
export AWS_SECRET_KEY=<the second line of the output>
export AWS_SESSION_TOKEN=<the third line of the output>
型
我该如何做到这一点(并仍然保持与oneliner)?
我试着做了以下几件事:
<some commands that output a json> | jq -r '.Credentials | .AccessKeyId, .SecretKey, .SessionToken' | export AWS_ACCESS_KEY_ID=`awk 'NR==1'`
型
它是有效的但是
<some commands that output a json> | jq -r '.Credentials | .AccessKeyId, .SecretKey, .SessionToken' | export AWS_ACCESS_KEY_ID=`awk 'NR==1'; export AWS_SECRET_KEY=`awk 'NR==2'`
型
挂起。
我用zsh。
4条答案
按热度按时间nkhmeac61#
其他答案尚未讨论的一个选项是使用jq
@sh
过滤器来生成对eval
直接安全的代码。字符串
请注意,上面的代码可能只是一行,为了可读性起见,我们将其分解为三个单独的shell命令:
型
这种方法的一个优点是,它可以正确地处理包含文本换行符的键或标记,这是目前没有其他答案提供的。
gtlvzcf82#
正如Charles Duffy所建议的,你可以使用这样的东西:
字符串
另外,正如Charles所建议的,您可以使用
here string
,如下所示:型
这是一个概念证明:
型
bvhaajcl3#
这个答案是建立在查尔斯·达菲的基础上的。这是专门为承担一个角色,这是一行,这是很容易别名。请记住将AWS_ACCOUNT_ID和ROLE_NAME替换为您的。
字符串
efzxgjgh4#
我会这样做
字符串
只有在成功读取某些内容时才导出变量。如果您希望将它们导出(空),只需删除“and”运算符(
&&
)。