kubectl -n aqua123 create secret generic aquadocker1234 --from-env-file=<(
aws secretsmanager get-secret-value --secret-id aqua_secret |
jq -r '.SecretString' | jq -r 'to_entries | .[] | '.key' + "=" + '.value'')
jq脚本的输出为xyz123@gmail.com= password1234
的形式。 Kubernates Secret不喜欢@登录输出。我想要类似'xyz123@gmail.com'= 'password1234'
(带引号)的输出。
如何修改我的jq代码以获得所需的输出?
答案 0 :(得分:2)
您正在使用单引号作为过滤器,但是不做任何操作来转义内部的单引号。您需要进行适当的转义以使用那些单引号。在单引号中,您必须关闭单引号,切换到双引号以添加单引号,然后再改回来。即'"'"'
... jq -r '.SecretString | to_entries[] | "'"'"'\(.key)'"'"'='"'"'\(.value)'"'"'"'
如果发现自己经常需要单引号,那么在.jq
文件中定义某些功能可能会有所帮助。
def squot: "'";
def squot($val): "\(squot)\($val|gsub(squot; "\\\(squot)"))\(squot)";
有了这个,您的过滤器现在变成:
... jq -r '.SecretString | to_entries[] | "\(squot(.key))=\(squot(.value))"'
答案 1 :(得分:0)
这是jq的@sh
的工作。考虑:
jq -rn '{"key": "xyz123@gmail.com", "value": "password1234"}
| "\(.key|@sh)=\(.value|@sh)" '
'xyz123@gmail.com'='password1234'