【问题标题】:How to pass a string parameter which contains spaces into the shell script in a Jenkinsfile如何将包含空格的字符串参数传递给 Jenkinsfile 中的 shell 脚本
【发布时间】:2022-11-14 22:02:08
【问题描述】:

我的 Jenkinsfile 中有一个字符串参数,其中包含一个空格

参数 { 字符串(名称:'KW_Issue_resolution',默认值:'不是问题',描述:'将问题标记为不是问题') }

我正在尝试将此参数传递到阶段内的 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
Cannot change status, 'Not' is not a valid status name

预期 shell 命令为 kwcheck set-status 190 --status "Not a Problem"

【问题讨论】:

  • 我会尝试将 ' 放在 ${params.KW_Issue_resolution} 周围。

标签: shell jenkins jenkins-pipeline sh


【解决方案1】:

您可以在 Groovy 语法中使用三引号。

因此,在三引号中,您可以像使用本机 bash 脚本一样使用 "'

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

【讨论】:

    【解决方案2】:

    由于该变量是在 Groovy 解释器中使用空格插入的,sh step 方法中的 shell 解释器由于分隔符的原因不会将其解析为单个参数字符串。您可以使用正常语法将其转换为 shell 解释器中的文字字符串:

    sh "kwcheck set-status ${params.KW_Issue_IDs} --status '${params.KW_Issue_resolution}'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 2016-01-08
      • 2012-12-02
      • 2017-01-10
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      相关资源
      最近更新 更多