Sqlplus打印结果两次并用空行

时间:2014-03-18 18:57:57

标签: oracle shell echo sqlplus

我编写shell脚本并想写sqlplus,当我写:

#!/bin/bash
result=$(sqlplus -s user/pass@DB  << EOF
set trimspool on;
set linesize 32000;
SET SPACE 0;
SELECT MAX(DNNCMNT_ANSWER_TIME)  FROM TKIMEI.DNNCMNT_IMEI_APPRV;
/
exit;
EOF)
echo "$result"

结果在txt文件中(我将其作为ksh sql.sh > result.txt执行):

MAX(DNNCM
---------
10-MAR-14

MAX(DNNCM
---------
10-MAR-14

它会自动在文件开头放一个空行并将结果写两次。

我该如何解决?

1 个答案:

答案 0 :(得分:8)

删除斜杠。它导致重复上一个命令(选择): http://docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1006932

此外,请与您的DBA讨论如何设置外部OS身份验证,以便您出于安全原因不必在shell脚本中对密码进行硬编码。设置完成后,您可以使用斜杠替换登录名/密码组合: http://docs.oracle.com/cd/E25054_01/network.1111/e16543/authentication.htm#i1007520