如果变量a或者b有 -/ 等字符要用 \ 进行转义
字符串变量中可以用单引号或者双引号 ,区别:双引号支持变量引用、转义符(比如\n 换行),单引号不支持
sed 命令执行时加 -i 参数会把修改应用到源文件上,否则只是屏幕显示

a="one"
b="two"
# 第一种:
eval sed -i ’s/$a/$b/’ filename
# 第二种(推荐):
sed -i "s/$a/$b/" filename
# 第三种:
sed -i ’s/’$a’/’$b’/’ filename 
# 第四种:
sed -i s/$a/$b/ filename

实践

# 定义变量 src  里面包含了 -  ,所以要用 \ 转义,并且要变量声明要用 双号 " 
src="\-Xms1303m \-Xmx1303m \-XX:MaxPermSize=256m \-Dorg.jboss.resolver.warning=true \-Dsun.rmi.dgc.client.gcInterval=3600000 \-Dsun.rmi.dgc.server.gcInterval=3600000 \-Dsun.lang.ClassLoader.allowArraySyntax=true"
# 定义变量 target  里面包含了 -  和 / ,所以要用 \ 转义,并且要变量声明要用 双号 " 
target='\-Xms4096m \-Xmx6144m \-XX:MaxPermSize=512m \-Dorg.jboss.resolver.warning=true \-Dsun.rmi.dgc.client.gcInterval=3600000 \-Dsun.rmi.dgc.server.gcInterval=3600000 \-Dsun.lang.ClassLoader.allowArraySyntax=true  \-XX:+UseParallelGC \-XX:+UseParallelOldGC \-XX:+PrintGC \-XX:+PrintGCTimeStamps \-XX:+PrintHeapAtGC \-Xloggc:\/opt\/log\/gc.log \-XX:+HeapDumpOnOutOfMemoryError'
# run.conf中 ,把变量 src 中的内容替换成 target 变量的内容
sed "s/$src/$target/" run.conf
参考:

作者:else05
链接:https://www.jianshu.com/p/78522b72bdd8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

邮箱地址不会被公开。 必填项已用*标注