Groovy:Jenkinsfile:无法将带有 space 的参数传递给 Jenkins 管道中的 shell 脚本

Groovy: Jenkinsfile: Unable to pass argument with space to shell script in jenkins pipeline

我在我的 jenkins 文件中使用脚本,传递的参数之一包含 space (--detect.project.user.groups="DATABASE RELEASE 1.0"):

sh './detect.sh --logging.level.com.synopsys.integration=DEBUG --blackduck.url="${URL}" --blackduck.api.token="${TOKEN}" --detect.project.version.name=${buildVersion} --detect.project.user.groups=\"DATABASE RELEASE 1.0\" --detect.project.name=${projectName}  --detect.source.path="${artifact_dir}/"'

通过常规 shell 脚本触发的相同脚本工作正常,blackduck 能够使用包含的 space 获取用户组,但通过内部的 jenkinsfile 使用相同的命令 运行带有 sh 的脚本,此处仅 DATABASE 被拾取并且扫描失败,因为它无法找到正确的用户组。

如果有任何解决办法,请告诉我。

谢谢!

https://community.synopsys.com/s/document-item?bundleId=integrations-detect&topicId=scripts%2Fscript-escaping-special-characters.html&_LANG=enus

有文字detect.sh --detect.project.name=\"Project Test\"

您必须在 groovy 字符串

中用另一个反斜杠转义每个反斜杠
sh 'detect.sh --detect.project.name=\"Project Test\"'