以下表达式做什么&lt; <eof> tmp </eof>

时间:2014-03-24 16:14:39

标签: oracle sqlplus

使用sqlplus与数据库连接的shell脚本包含以下行:

sqlplus username/password@DBNAME<<EOF>tmp.
(here there is a select sql query)

我知道<<EOF表示命令的开始。我在>tmp部分有以下疑问。

1)是否表示存储到文件中?

2)如果是,它会将SQL查询的结果单独放入tmp文件或查询和结果中。

请你清楚我这个吗?

1 个答案:

答案 0 :(得分:2)

<<EOF被称为&#34; heredocs&#34;。这意味着从脚本的下一行开始,直到显示&#34; EOF&#34;的行将被shell读入,并在标准输入上提供给命令。

在您的情况下,sqlplus命令正在向SQL查询提供,就像它来自标准输入一样。然后,sqlplus的输出将保存到名为tmp的文件中。

输入和输出是分开的。但是,sqlplus作为命令有习惯重复输入到输出,除非SET ECHO OFF另有说明。