【发布时间】:2016-04-17 04:10:08
【问题描述】:
这是我的 config.json:
{
"env": "dev",
"dev": {
"projects" : {
"prj1": {
"dependencies": {},
"description": ""
}
}
}
}
这是我的 bash 命令:
PRJNAME='prj1'
echo $PRJNAME
jq --arg v "$PRJNAME" '.dev.projects."$v"' config.json
jq '.dev.projects.prj1' config.json
输出:
prj1
null
{
"dependencies": {},
"description": ""
}
所以 $PRJNAME 是 prj1,但第一次调用只输出null。
有人可以帮我吗?
【问题讨论】:
-
您是否尝试过删除
$v周围的"?为什么不用shell来填写jq ".dev.projects.$PRJNAME" config.json之类的变量? -
@RamboRamon,使用 shell 填充变量容易出错——想想它是否包含需要转义的引号等字符。
jq保证生成语法有效的输出。
标签: json bash parameter-passing jq