我在shell脚本中使用sqlplus并且它工作(没有静默模式的sqlplus)但我可以在终端中看到输出。我尝试使用不同的组合以静默模式运行它,但它不起作用 -
sqlplus -s“$ DBUSER / $ DBPWD @(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(Host = $ DBHOST)(Port = $ DBPORT))(CONNECT_DATA =(SID = $ DBSID)))”@ $ SCRHOME / getCsv $ sqlFile.sql
它可以工作,但我可以在控制台上看到输出。我也尝试过:
sqlplus \-s "....
sqlplus \-s \ "...
sqplus -S
sqlplus -s \ << EOF "...
我尝试删除双引号,但在那种情况下,即使sqlplus命令也不起作用。我在shell脚本中使用此命令。
答案 0 :(得分:2)
正确的格式是:
sqlplus -S LOGIN_INFO @SCRIPT_TO_RUN
&#34;沉默&#34;模式不会阻止终端输出。它所做的就是:
-S Sets silent mode which suppresses the display of
the SQL*Plus banner, prompts, and echoing of
commands.
如果要抑制所有终端输出,那么您需要执行以下操作:
sqlplus ... > /dev/null 2>&1
答案 1 :(得分:1)
如果要抑制终端输出,可以在SQLPlus脚本中使用spool
并将终端输出转移到/ dev / null。以下是我的表现方式:
首先是SQLPlus:
spool ${HOME}/output.dat;
select
... <your query here> ...
;
spool off;
假设将其放在文件$HOME/my.sql
中。这可以在bash脚本中调用,如下所示:
echo "$(sqlplus -s /nolog << EOF
CONNECT <your DB connnect string>
whenever sqlerror exit sql.sqlcode;
set echo off
@${HOME}/my.sql
exit;
EOF) " > /dev/null
查询的输出将发送到${HOME}/output.dat
,并且没有SQLPlus输出将发送到您的终端(或者在我的情况下是日志文件)。