原创 Sed 替换的新字符串是路径 怎么破?

Jenkins 加 Shell脚本是持续集成非常常见的场景,
我们有时候需要对脚本中的内容进行替换 就会用到 sed 。
在 SptingBoot 启动脚本中,
如果想要根据 Jenkins 的 Workspace 动态的启动的话,就会遇到 路径与命令语义冲突这个问题。

怎么破?

sed 表达式本身的语法非常灵活。
当用户不方便转义字符串中的特殊字符(如/)时,sed支持使用自定义分隔符,让用户避开冲突。

用户自定义语法的分隔符很简单,就是在s的后面紧跟自定义的分隔符即可。
经过尝试,自定义的分隔符可以为%、$、@、?、#等等不会冲突的字符……
大家可以简单尝试一下就可以掌握,非常方便!

什么意思呢?看下边这个例子

下边这样替换呢,肯定是不行的 。
因为 路径的 /s/oldString/newString/ 规则冲突了

sed -i 's/$WORKSPACE//var/lib/jenkins/worspace/'

自定义的话就是把 sed 命令使用规则里的/ 换成你自定义的字符 如 #

sed -i 's#$WORKSPACE#/var/lib/jenkins/worspace#'

这样就OK了!简单吧?快去试试吧


  下一篇:  这是最后一篇了,亲
本文为 Laysonx 原创 文章,转载无需和我联系,但请注明来自 李鑫的杂货铺 或 李鑫博客