Groovy使用命令中的引号执行外部RTC命令

詹姆斯·E

我有一个外部命令,试图从Groovy运行。该命令在命令中嵌入了引号,并且出现以下错误:

Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.waitFor() is applicable for argument types: () values: []

我试图用反斜杠转义引号,但这也不起作用。

这是命令的示例:

scm workspace add-components test-workspace -s test-stream "test1" "test2" -r url

我尝试将其构建为:

scm workspace add-components test-workspace -s test-stream "\test1\" \"test2\" -r url

常规方法:

void addComponents(String repository, String name, String flowTarget, ArrayList components) {
    String compStr = components.toString().replace('[', '\"').replace(']', '\"').replace(', ', '\" \"')

    String cmd = """scm workspace add-components ${name} -s ${flowTarget} ${compStr} -r ${repository}"""
    println cmd

    def proc = cmd.execute()
    cmd.waitFor()

    getReturnMsg(proc)
}
蛋白石

你需要调用waitFor()proc不上cmd

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章