当前位置: 技术问答>linux和unix
sed使用变量的问题
来源: 互联网 发布时间:2016-08-22
本文导语: 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.sq...
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, 但是都不对,请问应该如何写?
#!/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'"}'
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'"}'