我在Jenkinsfile中有这些行:
parameters {
string(name: 'DATABASE', defaultValue: 'jenkinsdatabase',
description: 'The name of the database')
}
(...)
现在我想在一个阶段的步骤中使用$ {params.DATABASE}的值。
sh 'mysql --user ${USER} -p${PASSWORD} --host ${HOST} -e "DROP DATABASE IF EXISTS ${params.DATABASE};CREATE DATABASE ${params.DATABASE} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; commit;";export GRADLE_OPTS="-Xms1536m -Xmx1536m"'
但最终会有一个例外:糟糕的替换
有人能帮助我吗?
答案 0 :(得分:0)
您的sh
脚本正文使用单引号。
sh '...'
由于这些是单引号,因此不会发生string interpolation。这意味着所有$
字符串都将使用shell变量替换而不是Groovy替换。您在shell中收到错误替换,因为shell无法替换${params.DATABASE}
,因为这是无效的shell替换。
params
是一个Groovy变量,因此将单引号切换为双引号将执行变量的字符串插值。
sh "..."