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