我编写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
它会自动在文件开头放一个空行并将结果写两次。
我该如何解决?
答案 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