groovy 出现异常错误:无此属性:类的COUNTER:

6yoyoihd  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(127)

我尝试在Jenkins中运行groovy脚本,但遇到以下错误:groovy.lang.MissingPropertyException: No such property: COUNTER for class
脚本如下:

def runAzureMockExecution(Map m = [:]) {

    Map args = [
            ENDPOINT : "",
            action : "",
            vmCount : "",
            numSubscriptionId : "",
    ]

    args << m
    println(args)

    def ENDPOINT = args.ENDPOINT
    def action = args.action
    def vmCount = args.vmCount
    def numSubscriptionId = args.numSubscriptionId

    sh("""
        arr=();
        COUNTER=0
        while [  $COUNTER -lt $numSubscriptionId ]; do
        suffix=$RANDOM
        arr+=($suffix" ")
        let COUNTER=COUNTER+1
        done
    """)
}

runAzureMockExecution(
                        ENDPOINT: "https://sample-url.com",
                        action: "ADD",
                        vmCount: 1,
                        numSubscriptionId: 5
                )

有人能帮我吗?我也试着在在线编译器中运行同样的脚本,但得到了和上面一样的错误。

qmb5sa22

qmb5sa221#

Groovy正在尝试插入sh块中的变量,因为您没有任何定义为COUNTER的变量,所以它失败了。简单地转义COUNTER和其他变量,如下所示。

sh("""
    arr=();
    COUNTER=0
    while [  \$COUNTER -lt $numSubscriptionId ]; do
    suffix=\$RANDOM
    arr+=(\$suffix" ")
    let COUNTER=COUNTER+1
    done
""")

另一个选择是将所有内容作为环境变量传递,并通过用单引号将sh脚本括起来来避免字符串插值。

相关问题