[英]Create JSON file using jq
我正在尝试通过执行以下命令来创建一个 JSON 文件:
jq --arg greeting world '{"hello":"$greeting"}' > file.json
这个命令没有任何输入就卡住了。 虽然
jq -n --arg greeting world '{"hello":"$greeting"}' > file.json
解析不正确。 我只是想知道是否真的可以创建一个 JSON 文件。
所以你的代码不起作用,因为在双引号内包含了被视为字符串的变量。 这就是为什么它不起作用
正如@Jeff Mercado,指出解决方案是
jq -n --arg greeting world '{"hello":$greeting}' > file.json
关于-
在一个名字。 这实际上是可能的。 但截至目前,这在 jq 的发布版本中不可用。 如果你在你的系统上编译 jq 的 master 分支。 有一个名为$ARGS.named
的新变量可用于访问信息。
我刚刚编译并检查了下面的命令,它就像一个魅力
./jq -n --arg name-is tarun '{"name": $ARGS.named["name-is"]}'
{
"name": "tarun"
}
$ARGS
提供从 jq 命令行访问命名( --arg name value
)和位置( --args one two three
)参数,并允许您轻松安全地构建对象。
命名参数:
$ jq -n '{christmas: $ARGS.named}' \
--arg one 'partridge in a "pear" tree' \
--arg two 'turtle doves'
{
"christmas": {
"one": "partridge in a \"pear\" tree",
"two": "turtle doves"
}
}
位置参数:
$ jq -n '{numbers: $ARGS.positional}' --args 1 2 3
{
"numbers": [
"1",
"2",
"3"
]
}
请注意,您可以访问位置数组的各个项目,并且命名参数可直接用作变量:
jq -n '{first: {name: $one, count: $ARGS.positional[0]}, all: $ARGS}' \
--arg one 'partridge in a "pear" tree' \
--arg two 'turtle doves' \
--args 1 2 3
{
"first": {
"name": "partridge in a \"pear\" tree",
"count": "1"
},
"all": {
"positional": [
"1",
"2",
"3"
],
"named": {
"one": "partridge in a \"pear\" tree",
"two": "turtle doves"
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.