我有一个文件,我正试图使用bask将子字符串的所有内容替换为路径。
我可以使用命令:
sed -i s/{WORKSPACE}/$MYVARIABLE/g /var/lib/jenkins/jobs/MY-JOB/workspace/config/params.ini
我的
config/params.ini
看起来像:[folders]
folder1 = {WORKSPACE}/subfolder1
folder2 = {WORKSPACE}/subfolder2
但是,当
$MYVARIABLE
是一个路径时,它会失败(包含斜杠),sed
命令会失败:sed: -e expression #1, char 16: unknown option to `s'
当我手动运行它时,我看到
$MYVARIABLE
需要对它的路径斜杠进行转义。如何修改sed
命令以合并$MYVARIABLE
的转义版本? 最佳答案
没有什么说你必须使用/
作为分隔符。sed
将使用(几乎)任何你粘在里面的东西。我倾向于使用|
,因为从来没有(很少?)出现在路径中。
sridhar@century:~> export boong=FLEAK
sridhar@century:~> echo $PATH | sed "s|/bin|/$boong|g"
~/FLEAK:/usr/local/FLEAK:/usr/local/sbin:/usr/local/games:/FLEAK:/sbin:/usr/FLEAK:/usr/sbin:/usr/games:/usr/lib/lightdm/lightdm:/home/oracle/app/oracle/product/12.1.0/server_1/FLEAK
sridhar@century:~>
使用双引号将允许shell进行变量替换。