0

我打算在 sh 脚本中输入 hive shell(如下所示)并执行一些 HQL 请求。

$ hive
Hive history file=/tmp/admin/hive_job_log_admin_201309110939_570764_8012_1eecdf83_1dd4da6d.txt
hive>

然后我得到了一个可以按照我想要的方式工作的脚本。sh脚本的代码片段如下:

#!/bin/bash

#HQL
/home/hive/hive/bin/hive -u root -p root <<EOF
show tables;
EOF

但我不知道究竟是什么<<EOF,最后一个是什么EOF意思。谁能给我一个具体的解释?非常感谢!

4

2 回答 2

4

这称为“here document”(也称为 here-document、heredoc、hereis、here-string 或 here-script)语法。

<<EOF
show tables;
EOF

产生文本:

show tables;

有关更多信息,请参阅heredoc标签 wiki

于 2013-09-11T01:46:47.997 回答
0

EOF 只是一个常见的heredoc delineator,它可以是任何东西,而不仅仅是EOF,它可以是MyEOF 等。如果您将其声明为 MyEOF,那么它将使用字符串 MyEOF 作为标准输入,您可以将 $MyEOF 指定为变量,稍后您可以将其内容用作标准输入。正如 Johnsyweb 提到的,这被称为 herestring,因为它使用短字符串与整个块形成对比,就像在 heredoc 中一样。

于 2013-09-11T02:06:51.540 回答