Jenkins bat命令中带有变量的字符串连接

Jenkins bat命令中带有变量的字符串连接,jenkins,groovy,Jenkins,Groovy,我有一个简单的Jenkins函数/程序: def StartContainer() { def SqlPort = BranchToPort[env.BRANCH_NAME] bat "docker run -e \"ACCEPT_EULA=Y\" -e \"SA_PASSWORD=P@ssword1\" --name SQLLinux${env.BRANCH_NAME} -d -i -p $SqlPort:1433 microsoft/mssql-server-linux" }

我有一个简单的Jenkins函数/程序:

def StartContainer() {
    def SqlPort = BranchToPort[env.BRANCH_NAME]
    bat "docker run -e \"ACCEPT_EULA=Y\" -e \"SA_PASSWORD=P@ssword1\" --name SQLLinux${env.BRANCH_NAME} -d -i -p $SqlPort:1433 microsoft/mssql-server-linux"
}

BranchPort正是我希望它做的,我遇到的问题是将它返回的值插入下面对bat的调用中,我尝试了各种方法,这要么导致groovy脚本出现语言编译错误,要么导致bat命令在-p命令之后立即结束。很明显,我在这里缺少了一些非常简单的东西。

我的问题是确定Groovy映射的范围是否超出了使容器旋转的方法的范围,如果我将映射的声明移动到启动容器的方法中,它就会起作用。

您能提供所看到错误的输出吗。这里的字符串连接很好(尽管您混合了语法样式,env.BRANCH_NAME用大括号括起来,而SqlPort不是),只需尝试
echo
命令而不是
bat
,然后将结果添加到问题中。另外,添加要使用
bat
执行的正确命令。如果我对SqlPort变量使用与env.BRANCH_NAME相同的语法,那么在执行Jenkins构建时,我会得到以下错误堆栈:groovy.lang.MissingPropertyException:没有这样的属性:类的BranchPort:groovy.lang.Bindingso问题结束了?你自己回答了吗?是的,问题结束了。