我想从groovy脚本执行我的python类的方法。 此方法有两个参数。
当我从终端执行此命令时: python -c'导入Myclass; Myclass.method(“ param1”,“ param2”)'正常工作。
我使用以下常规脚本代码:
def cmd = "cd /path/to/the/folder && python -c 'import Myclass; Myclass.method(param1,param2)'"
def proc = ["/bin/sh", "-c", cmd].execute()
proc.waitFor()
println "return code: ${proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}"
当我想在groovy脚本中执行相同的操作时,我在参数NameError上出错:NameError:未定义名称'param1'。
你知道为什么吗?
最诚挚的问候
答案 0 :(得分:0)
在终端中执行脚本时,使用的是字符串文字"param1", "param2"
,而不是未定义的变量param1, param2
。由于您已经使用了单引号和双引号,因此应在反引号旁加上反斜杠:
def cmd = "cd /path && python -c 'import Myclass; Myclass.method(\"param1\", \"param2\")'"
或者,只需使用三引号:
def cmd = '''cd /path && python -c 'import Myclass; Myclass.method("param1", "param2")' '''