【发布时间】:2021-11-28 16:18:43
【问题描述】:
我有一个脚本./getClasses.sh,它返回逗号分隔的列表,如ApexClass1,ApexClass2。此列表中有两个以上的项目。
我想使用jq 中的那个列表,通过某个键值过滤掉 JSON 值,该键值与列表中的一个值重合
我试过in运营商
echo $(cat tests.json) | jq '.result.coverage.coverage[] | select(.name included($(./getClasses.sh)))'
和includes 运算符
echo $(cat tests.json) | jq '.result.coverage.coverage[] | select(.name in($(./getClasses.sh)))'
但他们都因错误而失败
jq: error: syntax error, unexpected IDENT, expecting ';' or ')' (Unix shell quoting issues?) at <top-level>, line 1:
文件 tests.json 包含以下 JSON
{"status": 0,
"result": {
"summary": {
"outcome": "Passed",
"testsRan": 13,
"passing": 13,
"failing": 0,
"skipped": 0,
"passRate": "100%",
"failRate": "0%"}, "tests": [], "coverage": {
"coverage": [
{
"name": "ApexClass1",
"totalLines": 25,
"lines": {},
"totalCovered": 23,
"coveredPercent": 92}, {
"name": "ApexClass2",
"totalLines": 25,
"lines": {},
"totalCovered": 23,
"coveredPercent": 92}, {
"name": "ApexClass3",
"totalLines": 25,
"lines": {},
"totalCovered": 23,
"coveredPercent": 92}
],
"records": []
} } }
我怎样才能达到想要的输出?
【问题讨论】:
-
您的
tests.json无效。 -
谢谢,错过了一个右括号,已修复