首页 > 解决方案 > 在 shell 中访问 groovy 变量并对它们执行算术运算

问题描述

我想通过访问变量并修改它来执行算术运算。

它给出错误作为错误替换

env.SUCCESSFUL_DEPLOY=$((${env.SUCCESSFUL_DEPLOY} + 1))

任何人都可以建议如何使它工作

 stages {
        stage('my stage') {
            steps {
                script {
                    ansiColor('xterm') {
                        echo ""
                    }
                    try {
                        env.SUCCESSFUL_DEPLOY = 0
                        for (int i = 0; i < 3; i++) {
                         sh '''
                         echo "Hello"
                         if [ $? -eq 0 ] ; then
                            env.SUCCESSFUL_DEPLOY=$((${env.SUCCESSFUL_DEPLOY} + 1))
                         fi
                         '''
                         mymethod(env.AUTH_URL)
                        }
                        echo "Total successful deploys are :${env.SUCCESSFUL_DEPLOY} out of 3 deploys"
                    }
                    catch (err) {
                        echo $err
                    }
                }
            }
        }
    }

编辑1:根据使用的建议

                    try {
                        env.SUCCESSFUL_DEPLOY = 0
                        for (int i = 0; i < 3; i++) {
                        sh """
                        echo 'Hello'
                        if [ $? -eq 0 ] ; then
                           env.SUCCESSFUL_DEPLOY=${ env.SUCCESSFUL_DEPLOY + 1 }
                        fi
                        """
                        }
                        echo "Total successful deploys are :${env.SUCCESSFUL_DEPLOY} out of 3 deploys"
                    }

但它仍然无法正常工作

标签: jenkinsjenkins-pipelinejenkins-groovy

解决方案


那是因为你用的$太多了。这应该有效。

env.SUCCESSFUL_DEPLOY=${ env.SUCCESSFUL_DEPLOY + 1 }

除了字符串插值,我注意到您正在使用它$?来找出最后一个退出代码。您是否知道您可以使用returnStatus: true它来接收sh函数的退出代码?

编辑:我刚刚注意到你正在使用''',将它们更改为"""


推荐阅读