Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 詹金斯逃脱司令部_Jenkins_Groovy_Continuous Integration_Escaping - Fatal编程技术网

Jenkins 詹金斯逃脱司令部

Jenkins 詹金斯逃脱司令部,jenkins,groovy,continuous-integration,escaping,Jenkins,Groovy,Continuous Integration,Escaping,有人能帮我逃过Jenkins groovy脚本中的sed shell命令吗 太难了 sh (""" sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g" AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r """) 三重双引号(“”“)字符串文字语法允许变量/表达式替换(插值),因此反斜杠(\)被解释为特殊字符“转义”“。由于第一个打开参数不是这样一个特殊字符,

有人能帮我逃过Jenkins groovy脚本中的sed shell命令吗

太难了

sh ("""
sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g" 
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
三重双引号(
“”“
)字符串文字语法允许变量/表达式替换(插值),因此反斜杠(
\
)被解释为特殊字符“转义”“。由于第一个打开参数不是这样一个特殊字符,Groovy编译失败。如果您的目的是在结果字符串中使用文字反斜杠,则需要转义反斜杠。也就是说,使用双反斜杠(
\\
)替换一个文字反斜杠

因此:


因此,如果您想替换字符串groovy变量中的一些字符或单词,例如“/”替换为“/”,以转义一个特殊字符,在本例中,它将是正斜杠,您可以使用下面的代码

因此,之后我们将能够应用LinuxSED命令而不会出现错误(例如,使用sed将占位符值替换为.env文件中所需的值)

下面我们展示一个Jenkins管道Groovy代码:

        String s = "A/B/C"
        your_variable = s.replace("/", "\\/")
        sh "sed -i -e 's/string_to_replace/${your_variable}/g' path/to/file/.env"
注意:
${your_variable}
将获取变量的内容

验证:

echo "Your variable new content: ${your_variable}"
Your variable new content: A\/B\/C
结果:

echo "Your variable new content: ${your_variable}"
Your variable new content: A\/B\/C

使用插件的snippen生成器更容易复制。同意。或者Groovy语言本身的文本操作工具。2.125以下内容对我有用:script{sh“sed-i's/app host/${APPLICATION_host}/g'de.mms_dresden.dosv.sahi.scripts/js/scripts/antest/antest.dd.csv”}@walla Jenkins代码段生成器很方便,但它总是使用单引号转义,这将防止shell变量被扩展,即
“…”
“…”。这种方式使复杂的shell转义更容易实现,特别是当需要多次执行时。如果要替换环境变量,请使用
def var=env.var.replace('/','\\/')