如何在Jenkins Groovy的多行shell脚本中使用Groovy定义的和OS系统变量

猎户座

我需要在Jenkins的多行shell脚本中访问Groovy定义的变量(例如var1)。我需要在sh中使用双引号“”(我在这里指的是

但是我也需要读取和更改os系统变量(例如aws_api_key)。它需要在sh中使用单引号''',并使用\来使美元$符号转义。(我指的是这里

如何同时使用它们?任何帮助都感激不尽。

例如

node ("Jenkins-Test-Slave") {
stage ("hello world") {
    echo 'Hello World'
}

def var1="bin"
stage ("test") {
    withEnv(["aws_api_key='define in withEnv'","service_url=''"]) {
        echo var1
        sh '''
            echo the groovy data var1 is "${var1}",'\${var1}',\$var1,${var1},var1!!!
            echo default value of aws_api_key is \$aws_api_key
            aws_api_key='changed in shell'
            echo new value of aws_api_key is \$aws_api_key

            export newvar='newxxx'
            echo the new var value is \$newvar
        '''
    }
}
}

结果是:

+ echo the groovy data var1 is ,${var1},,,var1!!!
the groovy data var1 is ,${var1},,,var1!!!
+ echo default value of aws_api_key is 'define in withEnv'
default value of aws_api_key is 'define in withEnv'
+ aws_api_key=changed in shell
+ echo new value of aws_api_key is changed in shell
new value of aws_api_key is changed in shell
+ export newvar=newxxx
+ echo the new var value is newxxx
the new var value is newxxx
戈特利·托特

代替多行String('''),使用多行GString(""")使字符串插值有效,然后${var1}将按预期进行插值:

sh """
    echo the groovy data var1 is "${var1}",'\${var1}',\$var1,${var1},var1!!!
    echo default value of aws_api_key is \$aws_api_key
    aws_api_key='changed in shell'
    echo new value of aws_api_key is \$aws_api_key

    export newvar='newxxx'
    echo the new var value is \$newvar
"""

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Jenkins Groovy中的多行shell脚本中设置变量?

什么时候在 Jenkins 中使用 Groovy 和 shell 脚本?

如何在 Groovy 中使用 shell 重启 Jenkins 节点

如何在 Jenkins Pipeline 中的 powershell 块和 groovy 块中使用环境变量

如何在多行批处理脚本中访问 jenkins groovy 变量

如何在jenkins DSL的groovy脚本中使用存储在jenkins中的凭据

如何在jmeter groovy脚本中使用csv变量?

如何在jenkins groovy中使用fmt_case?

如何在系统命令中使用awk脚本的shell变量?

如何在jenkins管道groovy脚本中使用json发出curl请求

如何在Jenkins声明性管道中的导入的groovy脚本中使用@Library?

如何在Jenkins Groovy Post Build插件中重复使用groovy脚本?

如何在IF语句中使用Jenkins本地定义的变量?

如何在参数选项中从Jenkins groovy脚本执行shell脚本?

如何在Jenkins Groovy脚本中执行HTTP POST请求?

如何在Groovy脚本中获取Jenkins构建参数?

如何在Jenkins文件Groovy函数的阶段外访问变量?

如何在多行shell中读取Jenkins管道变量?

如何在Jenkins Groovy脚本控制台中获取环境变量?

如何在Jenkins-groovy脚本中传递声明为`def`的变量

如何在外部 bash 脚本中使用全局 groovy 变量

如何在 Jenkins 中使用 PowerShell 参数

如何在Jenkins中使用PhantomJS插件?

如何在soapUi中使用Groovy脚本循环多次

Mule - 如何在 groovy 脚本中使用枚举?

Groovy/Jenkins - 如何在 http 请求正文中使用 for 循环

如何在 jenkins 管道 groovy 文件中使用 withcredentials 设置多个凭据

如何在Groovy中检查参数/变量是否可用于Jenkins“使用参数构建”

Groovy脚本中的Jenkins变量