Jenkins脚本化管道:无法在Shell中打印变量并在Shell中设置变量值

拉杰·桑普伊

Jenkins编写脚本的管道。两个问题:

  1. 我有一个全局变量var,我想在shell内访问其值。但是它什么也没打印
  2. var的值是使用shell脚本在其中一个阶段中设置的,以便在下一个阶段中进行访问,但它在shell中什么都不打印。

我想念什么?(请参见下面的脚本)

node {    
    var=10
    stage('HelloWorld') {
        sh '''
              echo "Hello World. Var=$var"  ===> Prints nothing for var
              var=20'''

    }
    stage('git clone') {
        echo "Cloning git. Var = $var"  ==> Prints 20, and not 10
        sh '''
          echo "Var in second stage is = $var"   ===> Doesnt print anything here. I need 20.
        '''
    }
}
zett42

1.将一个groovy变量传递给shell

您的示例不起作用,因为您使用的是带单引号的字符串文字。Groovy手册(重点是我的):

任何Groovy的表达可以在所有字符串文字从被内插,除了三单引号的字符串。

尝试这个:

sh "echo 'Hello World. Var=$var'"

或这个:

sh """
    echo 'Hello World. Var=$var'
    echo 'More stuff'
"""        

2.从shell设置一个Groovy变量

您不能从Shell步骤直接设置Groovy变量。从Groovy到Shell,这仅在一个方向上起作用。相反,您可以设置退出代码或将数据写入Groovy可以读取的stdout。

返回一个整数

传递true参数returnStatus并在shell脚本中设置退出代码,该代码将作为sh步骤的返回值

var = sh script: 'exit 42', returnStatus: true
echo "$var"   // prints 42

返回一个字符串

传递true参数returnStdoutecho从shell脚本使用以输出字符串数据。

var = sh script: "echo 'the answer is 42'", returnStdout: true
echo "$var"   // prints "the answer is 42"  

返回结构化数据

传递true参数returnStdoutecho从shell脚本使用以JSON格式输出字符串数据。

使用解析Groovy代码中的JSON数据JsonSlurper现在,您可以查询一个常规的Groovy对象。

def jsonStr = sh returnStdout: true, script: """
    echo '{
        "answer": 42,
        "question": "what is 6 times 7"
    }'
"""

def jsonData = new groovy.json.JsonSlurper().parseText( jsonStr ) 
echo "answer: $jsonData.answer"
echo "question: $jsonData.question"

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在emacs中设置变量值?

来自分类Dev

在GDB中打印结构数组的变量值

来自分类Dev

在狮身人面像文档中打印变量值

来自分类Dev

无法在回调中设置变量值

来自分类Dev

保存Javascript变量值并在python中读取

来自分类Dev

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

来自分类Dev

将jenkins管道中设置的变量传递到shell脚本

来自分类Dev

如何在python中的shell命令中使用变量值?

来自分类Dev

使用sed命令在Script shell中更改变量值;错误语法

来自分类Dev

无限循环等待变量值更改,并在mongo shell中每30秒检查一次

来自分类Dev

在模块中打印变量值

来自分类Dev

如何在shell脚本中的for循环中传递变量值

来自分类Dev

动态生成变量并在shell脚本中获取相应的值

来自分类Dev

无法在静态字段中设置变量值

来自分类Dev

变量无法在Shell脚本中识别

来自分类Dev

如何将变量值传递给脚本并在一行中运行它?

来自分类Dev

打印变量值将打印字符串Shell脚本

来自分类Dev

在Shell脚本中的Math表达式中使用变量值

来自分类Dev

在POSIX shell中,如何打印变量值的值

来自分类Dev

cfchart中的变量值

来自分类Dev

下载zip并使用Shell脚本将.js文件中的变量值替换为另一个值

来自分类Dev

根据条件变量中的值设置变量值

来自分类Dev

Shell脚本中的输入变量和管道变量冲突

来自分类Dev

如何在Popen中获取Shell变量值

来自分类Dev

更改 AWK 条件块内的 Shell 脚本变量值

来自分类Dev

如何在 If 中设置变量值

来自分类Dev

Jenkins Pipeline 脚本 sh 命令中的变量值

来自分类Dev

从 Jenkins 管道的 shell 中访问一个 groovy 变量

来自分类Dev

Shell脚本中的Jenkins管道环境变量创建一个新行

Related 相关文章

热门标签

归档