gpt4 book ai didi

json - 在 jq 中作为变量赋值

转载 作者:行者123 更新时间:2023-12-04 16:30:27 37 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Passing bash variable to jq

(9 个回答)


3年前关闭。




json processor jq对于 package.json

{
"someparent" : {
"somechild" : "oldvalue"
}
}

如果我运行以下命令(将 oldvalue 更改为 somevalue ):
jq '.someparent["somechild"] = "somevalue" "$aDirection/package.json"'

它已成功更改。但是,如果我给出一个变量而不是 someValue :
 aVar="anotherValue"
jq '.someparent["somechild"] = "$aVar" "$aDirection/package.json"'

它不工作。
我已经尝试过的:
["aVar"] #interpreted as string
["$aVar"] #interpreted as string
"$aVar" # aVar is not defined
$avar #aVar is not defined

最佳答案

jq 周围的单引号过滤器在错误的地方。在您的尝试中,它还包含了实际的 JSON 文件输入。对文件应用过滤器时的正确语法是

jq '<filter>' json-file

在您的情况下,正确的过滤器只是
.someparent["somechild"] = $aVar

并在 jq 中使用 shell 变量,您需要使用 --arg field 。将两个选项放在一起。 --arg 之后的第一个变量用于 jq 的上下文中紧随其后的是实际的 shell 变量。
aVar="anotherValue"
jq --arg aVar "$aVar" '.someparent["somechild"] = $aVar' "$aDirection/package.json"
# ^^^^ Remember the single quote
# terminating here and not extended

关于json - 在 jq 中作为变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638471/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com