我打算在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
究竟是什么意思。有人可以给我一个具体的解释吗?非常感谢!
答案 0 :(得分:4)
这称为“here document”(也就是here-document,heredoc,hereis,here-string或here-script)语法。
<<EOF
show tables;
EOF
产生文字:
show tables;
答案 1 :(得分:0)
EOF只是一个普通的heredoc描绘者,它可以是任何东西,不仅仅是EOF,它可以是MyEOF等。如果您将其声明为MyEOF,那么它将使用字符串MyEOF作为标准输入,您可以将$ MyEOF指定为变量,稍后您可以将其内容用作stdin。正如Johnsyweb所提到的那样,这被称为herestring,因为它使用短的字符串与整个块相反,就像在heredoc中一样。