Sed命令忽略Groovy脚本中的单引号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sed命令忽略Groovy脚本中的单引号相关的知识,希望对你有一定的参考价值。
您好我在Groovy中尝试使用SED替换字符串时遇到此问题,它忽略了我传递的单引号。这是我的代码,我尝试在sed中使用双引号,它抛出错误。
stage('Version')
{
dir('./Dest/Scripts/')
{
sh "sed -i 's/VERSION_BUILD=0/VERSION_BUILD= '$Version', System2 = '$name'/g' setversion.sql"
}
}
我想要的输出是
UPDATE &Shared_Version SET SharedVersion = '2010', System1 = 'XXXX', InetsoftVersion = 2, VERSION_BUILD='20180302', System2 = 'test';
COMMIT;
但是在运行Groovy脚本后,我得到的结果低于结果。
UPDATE &Shared_Version SET SharedVersion = '2010', System1 = 'XXXX', InetsoftVersion = 2, VERSION_BUILD= 20180302, System2 = test;
COMMIT;
我知道在shell命令中如果我们传递双引号它将替换它,但是Groovy并不喜欢它。
sed -i "s/VERSION_BUILD=0/VERSION_BUILD= '$Version', System2 = '$name'/g" setversion.sql
有人可以帮我解决这个问题。
谢谢
答案
以下脚本按预期工作
sh "sed -i 's/VERSION_BUILD=0/VERSION_BUILD= \x27${Version}\x27, System2 = \x27$name\x27/g' setversion.sql"
关键是单引号可以转义为 x27
以上是关于Sed命令忽略Groovy脚本中的单引号的主要内容,如果未能解决你的问题,请参考以下文章