Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在groovy脚本的shell块中声明新变量?_Shell_Jenkins_Groovy - Fatal编程技术网

如何在groovy脚本的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

就我个人而言,我不知道如何在groovy脚本的shell块中声明和使用新变量

例如,这个shell块-

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
表达式。