shell jq EOF将json值更新为0.0.x时无效的数值文字

cx6n0qe3  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(125)

我正在尝试更新我的json文件如下

jq  .attributes.DeployVersion.default=0.0.1 block.json > t.tmp && mv t.tmp block.json

这会引发一个错误

jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing '0.0.0') at <top-level>, line 1:
.attributes.DeployVersion.default=0.0.1

而这:

jq  .attributes.DeployVersion.default=0.1  block.json > t.tmp && mv t.tmp block.json

完美地工作(唯一的区别是我使用0.1而不是0.0.1)
尝试报价,不工作。

edqdpe6u

edqdpe6u1#

在版本字符串和整个表达式周围加上引号:

jq -r '.attributes.DeployVersion.default="0.0.2"'

或者转义版本字符串周围的引号:

jq -r .attributes.deployVersion.default=\"0.0.2\"

您也可以在管道中使用tostring,但这是不必要的。

相关问题