对于我来说,我无法弄清楚如何在常规脚本的shell块中声明和使用新变量。
例如,此shell块-
display
抛出错误
没有这样的属性:类GroovyUserScript的入耳列表
如果我在sh之前添加 def耳机列表,那么它会抛出错误--
没有方法签名:GroovyUserScript.sh()适用于 参数类型:(org.codehaus.groovy.runtime.GStringImpl)值:[ 出口earlist ='abc.ear,def.ear'回声;
有人可以帮助我如何在groovy脚本中的shell块中声明和使用变量吗?
答案 0 :(得分:0)
使用triple single quoted string
代替,它不会插值变量:
sh '''
export earlist='abc.ear,def.ear'
echo $earlist;
'''
请参见triple single quoted strings
上的文档:http://groovy-lang.org/syntax.html#_triple_single_quoted_string
以下是Groovy中可用字符串类型的概述:http://groovy-lang.org/syntax.html#_string_summary_table
答案 1 :(得分:0)
在我的工作场所咨询了高级专家之后,我找到了所需要的解决方案。
此代码存在的问题-
sh """
export earlist='abc.ear,def.ear'
echo $earlist;
"""
是当我说$ earlist时,编译器会查找一个名为earlist的常规变量,但找不到。由于earlist中有一个shell变量,因此我需要转义$。因此,正确的代码是-
sh """
earlist='abc.ear,def.ear'
echo \$earlist;
"""
Bonus TIL-如果我访问shell块内的常规变量,则该访问为只读。我无法编辑groovy变量的值,即使在shell块中也无法临时编辑。如果愿意,可以将groovy变量分配给shell变量,操纵shell变量值,将修改后的值保存在文件中,当shell块结束时,将文件读入原始groovy变量中。 >