这个answer对我没有帮助
下面是groovy中的方法:
def analyze(repoName){
result= sh (
script: '''
cd ${WORKSPACE}/${BUILD_NUMBER}
cat > sonar-project.properties << EOF_$$
sonar.projectKey=ABC-$repoName
sonar.projectName=ABC
sonar.projectBaseDir=${WORKSPACE}/${BUILD_NUMBER}
EOF_$$
''',
returnStatus: true
) == 0
print "Creating file - Return status: ${result}"
}
下面的行给出了错误:
sonar.projectKey=ABC-$repoName
属性文件的创建是通过条目sonar.projectKey=ABC-
如何在sh()
步骤中使用groovy变量?
答案 0 :(得分:2)
对于字符串插值,应使用双引号,因此只需将'''
替换为"""
然后将EOF_$$
更改为EOF_\$\$
答案 1 :(得分:1)
对于字符串插值,您应该在双引号处加上$
,将\$
转义为以下位置:
${WORKSPACE}
和${BUILD_NUMBER}
,您打算将它们用作bash环境变量,而不是常规变量EOF_$$
,您打算使用它的字面意思更改的代码:
def analyze(repoName){
result= sh (
script: """
cd \${WORKSPACE}/\${BUILD_NUMBER}
cat > sonar-project.properties << EOF_\$\$
sonar.projectKey=ABC-$repoName
sonar.projectName=ABC
sonar.projectBaseDir=\${WORKSPACE}/\${BUILD_NUMBER}
EOF_\$\$
""",
returnStatus: true
) == 0
print "Creating file - Return status: ${result}"
}