JQ json路径单引号和变量 [英] jq json path single quotes and variable

查看:4
本文介绍了JQ json路径单引号和变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试找出JQ的语法。 这一行工作得非常好:

echo $(cat ../post-auth/rkt-auth.json | jq -c --arg user ${vsphere_user} '.credentials.user = $user') > ../post-auth/rkt-auth.json

但是,当变量是json路径的一部分时,情况并非如此:

echo $(cat ../post-auth/docker-auth.json | jq -c --arg basejq ${base} --arg tempvarjq ${tempvar} '.auths.$tempvarjq.auth= $basejq') > ../post-auth/docker-auth.json

错误:

jq: error: syntax error, unexpected '$', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.auths.$tempvarjq.auth= $basejq       
jq: 1 compile error

有什么建议如何使用该变量更正此语法吗?

推荐答案

试试这个。

jq -c --arg basejq "${base}" 
    --arg tempvarjq "${tempvar}" 
    '.auths[$tempvarjq].auth= $basejq' 
    ../post-auth/docker-auth.json 
        > ../post-auth/docker-auth.json.tmp &&
mv  ../post-auth/docker-auth.json.tmp  
    ../post-auth/docker-auth.json

这篇关于JQ json路径单引号和变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆