You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkinsfile中向Shell脚本传递含空格的字符串参数?

解决Jenkins参数含空格时Shell命令解析错误的问题

当Jenkins参数包含空格时,直接拼接进sh命令字符串会被Shell拆分成多个参数,导致命令执行失败。以下是几种可行的解决方式:

方法1:转义双引号包裹参数

在sh命令的字符串中,给含空格的参数添加转义后的双引号,确保Shell将其识别为单个整体:

stage ('Mark KW issues as not a problem') {
    steps {
        sh "kwcheck set-status ${params.KW_Issue_IDs} --status \"${params.KW_Issue_resolution}\""  
    }
}

执行后Shell会解析为:

kwcheck set-status 190 --status "Not a Problem"

方法2:用单引号包裹参数

如果参数本身不包含单引号,也可以用单引号直接包裹含空格的参数,省去转义操作:

stage ('Mark KW issues as not a problem') {
    steps {
        sh "kwcheck set-status ${params.KW_Issue_IDs} --status '${params.KW_Issue_resolution}'"  
    }
}

执行后Shell会解析为:

kwcheck set-status 190 --status 'Not a Problem'

方法3:使用三重双引号字符串

Groovy的三重双引号允许直接使用未转义的双引号,写法更直观:

stage ('Mark KW issues as not a problem') {
    steps {
        sh """kwcheck set-status ${params.KW_Issue_IDs} --status "${params.KW_Issue_resolution}""""  
    }
}

方法4:通过环境变量传递参数

将Jenkins参数赋值给环境变量后,在Shell中引用环境变量,这种方式更安全,尤其适合参数包含特殊字符的场景:

stage ('Mark KW issues as not a problem') {
    steps {
        script {
            env.KW_ISSUE_IDS = params.KW_Issue_IDs
            env.KW_ISSUE_RESOLUTION = params.KW_Issue_resolution
        }
        sh 'kwcheck set-status ${KW_ISSUE_IDS} --status "${KW_ISSUE_RESOLUTION}"'
    }
}

这里sh命令使用单引号,让Shell自行解析环境变量,避免Groovy插值带来的问题。

内容的提问来源于stack exchange,提问作者Aman .sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:10:58