什么是sh脚本的意思?

时间:2013-09-11 01:45:47

标签: bash

我打算在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究竟是什么意思。有人可以给我一个具体的解释吗?非常感谢!

2 个答案:

答案 0 :(得分:4)

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

<<EOF
show tables;
EOF

产生文字:

show tables;

有关详细信息,请参阅tag wiki

答案 1 :(得分:0)

EOF只是一个普通的heredoc描绘者,它可以是任何东西,不仅仅是EOF,它可以是MyEOF等。如果您将其声明为MyEOF,那么它将使用字符串MyEOF作为标准输入,您可以将$ MyEOF指定为变量,稍后您可以将其内容用作stdin。正如Johnsyweb所提到的那样,这被称为herestring,因为它使用短的字符串与整个块相反,就像在heredoc中一样。