我在Groovy脚本中遇到问题,其中在shell脚本部分中无法访问该变量。
脚本-1:
def a=20;
println ("a is: $a");
输出-1:
a is: 20
脚本-2:
def a=20;
println ("a is: $a");
sh '''echo a is $a''';
输出-2:
groovy.lang.MissingMethodException:没有方法签名:Script1.sh()适用于参数类型:(java.lang.String)值:[echo a is $ a] 可能的解决方案:使用([Ljava.lang.Object;),是(java.lang.Object),run(),run(),any(),with(groovy.lang.Closure) 在Script1.run(Script1.groovy:3)
如何在shell部分$a = 20
中获取sh
。换句话说,在shell脚本部分中传递变量$ a需要什么操作。
我正在Jenkins管道的上下文中编写这个脚本,我正面临一个问题,即在shell部分中看不到groovy变量。
答案 0 :(得分:1)
这有效:
pipeline {
agent any
stages {
stage('Example') {
steps {
script {
// a is accessible globally in the Jenkinsfile
a = 20
// b is only accessible inside this script block
def b = 22
sh "echo a is $a"
sh "echo b is $b"
}
}
}
}
post {
always {
sh "echo a is $a"
}
}
}
你应该对shell语句使用双引号而不是三重单引号。