ITPub博客

首页 > IT基础架构 > 应用安全 > [20181203]bash here $.txt

[20181203]bash here $.txt

原创 应用安全 作者:lfree 时间:2018-12-03 10:49:05 0 删除 编辑

[20181203]bash here $.txt


--//有时候使用bash编程调用sqlplus的here.如果脚本里面sql语句存在$,要转义一下.

--//如果很多处理起来会比较麻烦.通过例子说明问题:


$ sqlplus -s -l scott/book <<EOF

> set numw 12

> select current_scn from v$database ;

> EOF

select current_scn from v

                        *

ERROR at line 1:

ORA-04044: procedure, function, package, or type is not allowed here


--//v$database 中$database被bash解析为变量.一般常规的做法是转义一下.


$ sqlplus -s -l scott/book <<EOF

> set numw 12

> select current_scn from v\$database ;

> EOF


 CURRENT_SCN

------------

 13815329111


--//一种做法建立脚本:

$ cat a.txt

set numw 12

select current_scn from v$database ;

quit


$ sqlplus -s -l scott/book @a.txt

CURRENT_SCN

------------

 13815329331


$ sqlplus -s -l scott/book <<EOF

> $(cat a.txt)

> EOF


 CURRENT_SCN

------------

 13815329287


--//实际上还有另外的做法就是给EOF加入引号,这样里面$就不需要转义.


$ sqlplus -s -l scott/book <<'EOF'

> set numw 12

> select current_scn from v$database ;

> EOF


 CURRENT_SCN

------------

 13815329741

--//注意后面的EOF不需要引号.


$ sqlplus -s -l scott/book <<"EOF"

> set numw 12

> select current_scn from v$database ;

> EOF


 CURRENT_SCN

------------

 13815329823


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2222435/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2326
  • 访问量
    6055974