Windows 上对象构造函数中的 jq 算术运算

jq arithmetic operation in object constructors on Windows

假设有一个 sample.json 文件,其内容如下:

[
 {
  "a": 1, 
  "b": 2
 }
]

如果我运行一个jq命令如下(Windows10命令行):

> type sample.json| jq ".[] | .a - .b"
-1

但是如果我尝试用一​​个键构建一个对象,其值将是减法运算符的结果,我不能:

> type sample.json| jq ".[] | {c: .a - .b}"
jq: error: syntax error, unexpected '-', expecting '}' (Windows cmd shell quoting issues?) at <top-level>, line 1:                                                                                                                                                                        .[] | {c: .a - .b}                                                                                                                                                                                                                                                                        jq: 1 compile error

这可能是什么类型的“引用问题”,如何“修复”它?谢谢!

编辑:忘了说了,+运算符也是一样的!

将表达式放在括号中:

jq ".[] | {c: (.a - .b)}" sample.json
{
  "c": -1
}

Demo


jq ".[] | {c: (.a + .b)}" sample.json
{
  "c": 3
}

Demo