我在shell脚本中使用sqlplus,它可以工作(sqlplus没有静默模式),但我可以在终端中看到输出。我试着用不同的组合在静音模式下运行它,但它不工作-
sqlplus -s "$DBUSER/$DBPWD@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=$DBHOST)(Port=$DBPORT))(CONNECT_DATA=(SID=$DBSID)))" @$SCRHOME/getCsv$sqlFile.sql
<顺便说一句,-s是黄色的,而不是黑色的,就像shell脚本中的echo命令一样>
它工作,但我可以看到控制台上的输出。我也试过:
sqlplus \-s "....
sqlplus \-s \ "...
sqplus -S
sqlplus -s \ << EOF "...
我尝试删除双引号,但在这种情况下,即使sqlplus命令也不起作用。我在shell脚本中使用这个命令。
4条答案
按热度按时间kokeuurv1#
正确的格式是:
“静音”模式不会阻止终端输出。它所做的就是:
如果你想禁止所有的终端输出,那么你需要做一些类似的事情:
sqlplus ... > /dev/null 2>&1
zzoitvuj2#
必须使用set termout off
这将是:
sqlplus -S "$DBUSER/$DBPWD@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=$DBHOST)(Port=$DBPORT))(CONNECT_DATA=(SID=$DBSID)))" @$SCRHOME/getCsv$sqlFile.sq
l并将此行添加到getCsv$sqlFile.sql的开头(它必须在任何SQL命令之前)。
wwwo4jvm3#
如果您想禁止终端输出,可以在SQLPlus脚本中使用
spool
并将终端输出转移到/dev/null。我是这么做的:首先是SQLPlus:
假设它被放置在文件
$HOME/my.sql
中。这可以在bash脚本中调用如下:查询的输出将被发送到
${HOME}/output.dat
,没有SQLPlus输出将发送到您的终端(或日志文件,就像我的情况一样)。toiithl64#
取消设置
ORACLE_PATH
,使其不执行login.sql的内容