You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中Docker命令--sql-mode参数单引号转义问题求助

在Jenkinsfile中让docker命令的--sql-mode='''参数原样执行

问题根源在于Jenkinsfile基于Groovy语法,当用单引号包裹sh命令时,Groovy会将连续两个单引号解析为一个转义单引号。你原命令里的--sql-mode='''会被Groovy处理成--sql-mode=',导致参数不符合预期。

以下是几种可行的解决方法:

方法一:用双引号包裹整个命令

Groovy的双引号字符串不会转义内部的单引号,能直接把命令原样传递给shell执行:

sh "docker run --name container_name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ci --sql-mode='''"

方法二:在单引号命令中转义单引号

按照Groovy单引号的转义规则,每两个单引号代表一个实际的单引号。要输出三个单引号,需要写六个连续单引号:

sh 'docker run --name container_name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ci --sql-mode='''''''

方法三:使用Groovy三重单引号字符串

三重单引号支持原样保留内部的单引号,只需注意不要用连续三个单引号提前闭合字符串即可。要输出三个单引号,直接写六个连续单引号:

sh '''docker run --name container_name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_ai_ci --sql-mode=''''''

额外说明

如果你的实际需求是将sql-mode设为空值,只需要写--sql-mode=''即可。此时在单引号命令中写成--sql-mode=''(四个单引号)就能正确传递--sql-mode=''参数。

内容的提问来源于stack exchange,提问作者Liviu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:07:31