如何在groovy脚本的shell块中声明新变量?
就我个人而言,我不知道如何在groovy脚本的shell块中声明和使用新变量 例如,这个shell块-如何在groovy脚本的shell块中声明新变量?,shell,jenkins,groovy,Shell,Jenkins,Groovy,就我个人而言,我不知道如何在groovy脚本的shell块中声明和使用新变量 例如,这个shell块- sh """ export earlist='abc.ear,def.ear' echo $earlist; """ 说错话 类:GroovyUserScript没有这样的属性:earlist 如果我在sh之前添加def earlist,那么它会抛出错误- GroovyUserScript.sh()方法的签名不适用于 参数类型:(org.codehaus.groovy.run
sh """
export earlist='abc.ear,def.ear'
echo $earlist;
"""
说错话
类:GroovyUserScript没有这样的属性:earlist
如果我在sh之前添加def earlist,那么它会抛出错误-
GroovyUserScript.sh()方法的签名不适用于
参数类型:(org.codehaus.groovy.runtime.GStringImpl)值:[
导出earlist='abc.ear,def.ear'echo
有人能帮我在groovy脚本中如何在shell块中声明并使用变量吗?使用
三重单引号字符串,它不会插入变量:
sh '''
export earlist='abc.ear,def.ear'
echo $earlist;
'''
请参阅此处有关三重单引号字符串的文档
:
下面是Groovy中可用字符串类型的概述:在咨询了我工作场所的高级专家后,我找到了我正在寻找的解决方案
此代码的问题是:
sh """
export earlist='abc.ear,def.ear'
echo $earlist;
"""
当我说$earlist时,编译器查找名为earlist的groovy变量,但没有找到它。因为earlist有一个shell变量,所以我需要转义$。因此,正确的代码是-
sh """
earlist='abc.ear,def.ear'
echo \$earlist;
"""
Bonus TIL-如果我在shell块内访问groovy变量,则访问权限为只读。我无法编辑groovy变量的值,即使是在shell块内暂时编辑。如果我确实想这样做,我可以将groovy变量分配给shell变量,操纵shell变量值,将修改后的值保存在文件中,并在shell块结束时,将文件读入原始groovy变量。使用${earlist}直接使用单引号sh'''.'''.''
。或者必须转义$
符号:\$
。当使用双引号时,groovy尝试用groovy变量值替换字符串中的$xxx
表达式。