Chinaunix首页 | 论坛 | 博客
  • 博客访问: 856727
  • 博文数量: 1384
  • 博客积分: 27795
  • 博客等级: 上将
  • 技术积分: 16887
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-12 09:28
个人简介

只是心态,抓住机会。

文章分类

全部博文(1384)

文章存档

2014年(3)

2013年(403)

2012年(978)

分类: LINUX

2013-04-11 17:19:55

sed使用变量的问题


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, 但是都不对,请问应该如何写?

 

dickeny

dickeny
用户头衔:注册会员

状态:我不在线

发表于2010-04-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里面的斜线符就不需要转义了,阅读起来也更舒服了。

阅读(1004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~