我有一个Jenkinsfile,该文件在命令周围使用三个刻度线来执行:
sh ''' command '''
我们不知道为什么需要三个刻度线或它们起什么作用。 在Jenkinsfile文档集中可以看到这种语法。
答案 0 :(得分:5)
这与bash无关(在其中,三引号根本没有特殊含义),与Groovy无关(与解析Jenkinsfiles的单独的非bash解释器有关)。 / p>
在Groovy中,但不是在bash中,字符串必须使用三引号引起来以跨多行。
在Jenkinsfile中的sh
指令的上下文中,用三引号引起来的字符串的 content 作为脚本传递给外壳程序;但是,语法是由Groovy解析的,因此只有Groovy关心报价单本身(而不是报价内容)。
答案 1 :(得分:0)
您能否进一步了解它是哪种命令,它是unix命令还是某些脚本?
有问题的单引号和它的变体,如'''(3个滴答),跳过了变量扩展,它可以用来显示正在执行的内容。
echo '''Updating JAVA_HOME variable :
export $JAVA_HOME="$NEW_JAVA_HOME" '''
但是,在您的问题中,命令(一些字符串)被括在3个刻度线之间,并且sh试图执行该命令或脚本。下面是一个这样的例子
$ echo "echo hello" > /tmp/tesh.sh
$ sh '''/tmp/test.sh'''
hello