Groovy脚本执行jq命令提示/bin/jq: Argument list too long错误如何解决
报错根因
你当前的写法是把存储了curl返回JSON的${projectContent}变量直接作为文件名参数传给jq,当JSON内容体积较大时,会超出系统允许的命令行参数长度上限,触发该错误。
解决方案
- 方法1:通过管道传递内容给jq
不需要把JSON内容作为参数传递,通过标准输入喂给jq即可,推荐用printf输出变量内容,避免部分echo实现的默认转义逻辑破坏JSON结构:
Version_List=$(printf '%s' "${projectContent}" | jq -r '.items[] .version')
- 方法2:用Here-string特性简化写法
如果流水线运行环境支持bash的here-string特性(绝大多数Linux环境默认支持),可以直接把变量内容作为标准输入传入,写法更简洁:
Version_List=$(jq -r '.items[] .version' <<< "${projectContent}")
- 方法3:使用Groovy内置JSON解析能力(优先推荐)
在Groovy流水线中可以直接绕开外部jq命令依赖,用Groovy原生的JSON解析工具提取字段,既不会触发参数长度限制,执行效率和稳定性也更高:
import groovy.json.JsonSlurper def jsonSlurper = new JsonSlurper() def projectJson = jsonSlurper.parseText(projectContent) def versionList = projectJson.items*.version
内容的提问来源于stack exchange,提问作者user16991581
相关产品推荐
相关产品推荐

