使用jq从dependencies键添加bundleDependencies数组遇错,如何修复?
修复jq命令的bash语法错误并生成bundleDependencies数组
需求说明
需要用jq工具处理JSON数据,将dependencies对象的所有键提取出来,作为bundleDependencies数组添加到原JSON中。
原始JSON数据:
{ "name": "hello", "dependencies": { "progress": "^2.0.0", "tar": "^6.2.1" } }
期望输出:
{ "name": "hello", "dependencies": { "progress": "^2.0.0", "tar": "^6.2.1" }, "bundleDependencies": ["progress", "tar"] }
报错分析
给出的命令触发bash语法错误:
# jq ".bundleDependencies = (.dependencies | keys[])" <<< "$json_string")" bash: syntax error near unexpected token `)'
错误原因有两个:
- 命令末尾多了一个多余的右括号
),导致bash解析失败 - jq表达式中使用
keys[]会将每个键单独输出,最终bundleDependencies会被多次赋值为单个字符串,无法生成目标数组
修复后的命令
修正bash语法错误,同时调整jq表达式使用keys(而非keys[])直接获取数组:
jq '.bundleDependencies = (.dependencies | keys)' <<< "$json_string"
验证结果
执行上述命令后,输出结果与期望完全一致,成功将dependencies的键生成为bundleDependencies数组。
内容的提问来源于stack exchange,提问作者stackbiz
相关产品推荐
相关产品推荐

