这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变量?
你应该为字符串插值加双引号,并在以下地方通过$
转义\$
:
${WORKSPACE}
和${BUILD_NUMBER}
,你打算将它们用作bash环境变量,而不是groovy变量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}"
}
你应该使用双引号进行字符串插值,所以只需将'''
替换为"""
即可
并将EOF_$$
改为EOF_\$\$