[英]jq: Accessing fields with - character in shell script
我试图从shell脚本使用jq从以下json访问字段“my-tag”:
json文件:
{
"tag": {
"value": "hello"
},
"my-tag": {
"value": "hello-my-tag"
}
}
Shell脚本:
#!/bin/bash
main()
{
search="my-tag"
file="myjson.json"
value=($(jq ".$search.value" "$file"))
echo $value
}
main "$@"
执行此脚本时,我收到以下错误:
error: tag is not defined
.-tag.value
^^^
1 compile error
如何在shell脚本中正确提取字段?
作为一般经验法则,我强烈建议不要在过滤器中放置shell变量,并使用参数传递它们。
jq --arg search "$search" '.[$search].value' "$file"
您的过滤字符串与脚本等效。 您不希望每次想要更改值时都修改脚本,您可以对其进行参数化。
您必须对任意键字符串使用关联数组表示法
jq ".[\"$search\"].value" "$file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.