使用变量时,Sed不会替换jenkins

时间:2016-10-10 06:24:33

标签: shell jenkins sed

我在jenkins中运行shell脚本如下(更改为groovy格式)。但是当我尝试在jenkins中运行时,它没有替换 port_https 的值。但是,当我尝试手动运行时,将值更改为已导出。

 sh "find ./ -type f -name '*.yml' -exec sed -i -e \"s/url_protocol: http\$/url_protocol: https/g\" {} \\ ;"sh "find ./ -type f -name '*.yml' -exec sed -i -e \'s/protocol: \"http\"\$/protocol: \"https\"/g\' {} \\;"sh "export abc_port=\"\$(find ./pdf/myInventory/dyn_conf/group_vars/abc1/vars.yml -exec grep abc_solution_portbase: {} \\; | cut -d: -f2)\" ; export port_https=\$((\$abc_port + 81)) ; export port=\"\$(find ./pdf/myInventory/dyn_conf/group_vars/def1/vars.yml -exec sh -c 'grep -A 3 -e def_nei_abc_host {} | grep -e port' \\; | cut -d: -f2)\" ; find ./pdf/myInventory/dyn_conf/group_vars/def1/vars.yml -exec sed -i -e 's/port:\${port}/port: \"\"\${port_https}\"\"/g' {} \\;"

控制台输出显示每个参数的正确导出值。

更新

有问题的行

find ./pdf/myInventory/dyn_conf/group_vars/def1/vars.yml -exec sed -i -e 's/port: "24080"$/port: 24081/g' '{}' ';'

我试图让端口成为

port: "24081"

正如你所说,我将单引号改为双引号,如下所示

find ./pdf/myInventory/dyn_conf/group_vars/def1/vars.yml -exec sed -i -e \"s/port:\${port}\$/port: \"\${port_https}\"/g\" {} \\;"

但是当我尝试使用jenkins运行时,端口的双引号无法识别。并成为

port: 24081

0 个答案:

没有答案