Sed命令忽略Groovy脚本中的单引号

问题描述 投票:1回答:1

您好我在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 

有人可以帮我解决这个问题。

谢谢

shell jenkins groovy sed
1个回答
0
投票

以下脚本按预期工作

sh "sed -i 's/VERSION_BUILD=0/VERSION_BUILD= \\x27${Version}\\x27, System2 = \\x27$name\\x27/g' setversion.sql"

关键是单引号可以转义为\ x27

© www.soinside.com 2019 - 2024. All rights reserved.