LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1522|回复: 1

sed使用变量的问题

[复制链接]
发表于 2010-4-26 09:43:44 | 显示全部楼层 |阅读模式
sed使用变量的问题
shell脚本中使用如下sed语句替换一些文本中的变量:

#!/bin/sh
sed -i 's/ORACLE_HOME_PATH/XXXXX_HOME_PATH/g' a.sql x.sql c.sql v.sql b.sql n.sql

手动将XXXXX_HOME_PATH修改后:
sed -i 's/ORACLE_HOME_PATH/\/u01\/app\/oracle\/product\/11.2.0\/dbhome_1/g' a.sql x.sql c.sql v.sql b.sql n.sql

执行成功;

现在想用使用变量:
val=$ORACLE_HOME
sed -i 's/ORACLE_HOME_PATH/”$val“/g' a.sql x.sql c.sql v.sql b.sql n.sql

执行失败。
同样试过:‘$val’, `$val`, val, 但是都不对,请问应该如何写?
发表于 2010-4-26 13:01:32 | 显示全部楼层
注意最外层有单引号,'s/xxxx/xxx/'。
为了达到你的目的,应当使用双引号,这样里面的变量才能够替换。
[php]sed -i "s/ORACLE_HOME_PATH/$val/g" a.sql x.sql c.sql v.sql b.sql n.sq[/php]
又,你的替换字符串中含有 / 符号,所以我建议使用其他符号来分割sed的命令:
[php]
sed 's@xxxxx@xxxx@'
sed -i "s@ORACLE_HOME_PATH@$val@g" a.sql x.sql c.sql v.sql b.sql n.sq
[/php]
这样,PATH里面的斜线符就不需要转义了,阅读起来也更舒服了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表