我一直在尝试将代码分成两个不同的文件:callTheFunction.groovy
和theFunction.groovy
。
从文件名可以看出:
callTheFunction.groovy
调用在theFunction.groovy
中定义的函数,并将随机值作为参数传递。theFunction
是一个shell脚本,位于groovy函数内部,应该使用从callTheFunction
传递的参数。
问题:
该shell脚本无法识别/理解参数,变量为空,没有值。
theFunction.groovy
def call(var1, var2) {
sh '''
echo "MY values $var1 and $var2"
'''
}
callTheFunction.groovy
def call {
pipeline {
stages {
stage ('myscript') {
steps {
theFunction("Value1", "Value2")
}
}
}
}
}
管道输出:
MY values and
我知道这方面有类似的问题:
def var1 = "myvalue"
和def var2 = "myothervalue"
, 并将shell脚本置于同一文件中,它就可以工作。 - user1098490sh """ ... """
,如果我有一个带有for
循环和sed
的例子,该怎么办呢?例如:for i in a b c; do sed -i '/^$i/d
myfile--> 这将无法工作,因为当您使用 **三重双引号** 时,必须转义 shell 变量,这意味着我的
sed将如下所示:
sed -i '/^$i/d myfile。
sed不再寻找我的变量
$i,而是字符
$和
i`。 - user1098490''' ... ''' + 变量 + ''' ... '''
来注入变量值。 - daggett