shell 用带有句号的jq名称设置一个值

q7solyqu  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(173)

我想知道如何转义newValue,以便jq替换以下内容中的值:

#!/bin/sh

test="{ \"one.one\" : { \"version\" : \"0.0.1\" }, \"two.two\" : { \"version\" : \"0.0.2\" } }"
newvalue="3.3.3"
newjson=$(echo $test | jq '."two.two".version = "$newvalue" ')
echo $newjson

输出:

{ "one.one": { "version": "0.0.1" }, "two.two": { "version": "$newvalue" } }

我在$newvalue周围尝试的所有转义\"\'似乎都不起作用

sqougxex

sqougxex1#

首先,要使用变量,它不能用引号括起来。

"$newvalue"

$newvalue

第二,你永远不要在jq程序中设置$newvalue

--arg newvalue "$newvalue"

相关问题