JQ中.key的括号

我不明白为什么()要为此工作必须输入密钥:

# kbrandt at glade.local in ~ on git:master x [15:08:19]

$ cat host | jq '. | to_entries | map({ (.key) : .value.CPU.PercentUsed })' | tail

{

"rpi-b827eb2d7d23": 10.333333333333334

},

{

"rpi-b827eb8d7c8d": 60

},

{

"rpi-b827eba999fa": 40.733333333333334

}

]

# kbrandt at glade.local in ~ on git:master x [15:08:54]

$ cat host | jq '. | to_entries | map({ .key : .value.CPU.PercentUsed })' | tail

jq: error: syntax error, unexpected FIELD (Unix shell quoting issues?) at <top-level>, line 1:

. | to_entries | map({ .key : .value.CPU.PercentUsed })

jq: 1 compile error

回答:

定义对象文字时,括号指示表达式值应为属性名称。否则,如果您不使用括号,则为文字名称。

因此,这些是定义具有"foo"属性的对象的等效方法:

{ foo: 1 }

{ "foo": 2 }

"foo" as $name | { ($name): 3 }

{ somename: "foo" } | { (.somename): 4 }

以上是 JQ中.key的括号 的全部内容, 来源链接: utcz.com/qa/403805.html

回到顶部