日期:2014-05-16  浏览次数:20828 次

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

------解决方案--------------------
引号之引号

sed -i 's/ORACLE_HOME_PATH/"'$val'"/g' a.sql x.sql c.sql v.sql b.sql n.sql

楼主可以用简单的命令验证
val=123; awk ' BEGIN {print "'$val'"}' < /dev/null