Chinaunix

标题: help:脚本执行 [打印本页]

作者: hotmango    时间: 2006-07-09 18:29
标题: help:脚本执行
脚本如下:
#!/bin/sh
CMD_STR="
/u01/app/oracle/product/9.2.0/bin/sqlplus /nolog <<EOF
connect / as sysdba
select * from  v\$session ;

exit;
EOF

"
echo "$CMD_STR"

/bin/sh -c "$CMD_STR"

执行的结果:

[oracle@kalei rman]$ ./mytest1.sh

/u01/app/oracle/product/9.2.0/bin/sqlplus /nolog <<EOF
connect / as sysdba
select * from  v$session ;

exit;
EOF



SQL*Plus: Release 9.2.0.4.0 - Production on &ETH;&Ccedil;&AElig;&Uacute;&Egrave;&Otilde; 7&Ocirc;&Acirc; 9 18:25:57 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> Connected.
SQL> select * from  v
               *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
[oracle@kalei rman]$

怎么会这样呢?
作者: 大蚂蚁    时间: 2006-07-09 19:01
table or view does not exist
作者: hotmango    时间: 2006-07-09 20:19
别开玩笑了,v$session不存在的话,数据库肯定没有起来。肯定是shell语法的问题。
我估计是转义符号的问题。
如果仅仅是执行下面是一点问题没有的:
#!/bin/sh
/u01/app/oracle/product/9.2.0/bin/sqlplus /nolog <<EOF
connect / as sysdba
select * from  v\$session ;

exit;
EOF
作者: waker    时间: 2006-07-10 08:03
/u01/app/oracle/product/9.2.0/bin/sqlplus /nolog <<\EOF
connect / as sysdba
select * from  v$session ;

exit;
EOF
作者: hotmango    时间: 2006-07-10 17:53
waker的办法不可行。
可行的要么是cmd用'和'包含起来,要么就用下面的:
#!/bin/sh
CMD_STR="
/u01/app/oracle/product/9.2.0/bin/sqlplus /nolog <<EOF
connect / as sysdba
select * from  v\\\$session ;

exit;
EOF

"
echo "$CMD_STR"

/bin/sh -c "$CMD_STR"




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2