Bash语法:什么是“<<”?

时间:2009-12-18 19:23:13

标签: bash syntax

有人可以解释一下“<<”在以下代码中?

mysql test<<E0Q
Select * from signins

我会尝试自己搜索,但很难找到符号......

谢谢, 丹

5 个答案:

答案 0 :(得分:8)

这是“此处文件”,请参阅http://www.linuxjournal.com/article/3771

答案 1 :(得分:3)

Here docs,或者是一种轻松将大型文本块输入程序的方法。

答案 2 :(得分:3)

它不仅用于管道。例如,Linux From Scratch演练中使用的脚本广泛使用heredocs与cat命令和输出重定向运算符(>)结合使用。这是一个这样的例子:

user@domain ~$ cat >test.c <<EOF
int main(void){return 0;}
EOF
user@domain ~$

将&lt;&lt;&lt; EOF start分隔符和EOF结束分隔符之间的所有文本写入文件`test.c',一旦遇到EOF结束分隔符,就会返回到shell提示符。< / p>

答案 3 :(得分:2)

他们在这里被称为文件。从手册:

  

此处文件

This type of redirection instructs the shell to read input from the
current source until a line containing only word (with no trailing blanks)  is
seen.   All  of  the lines read up to that point are then used as the standard
input for a command.

The format of here-documents is:

       <<[-]word
               here-document
       delimiter

答案 4 :(得分:0)

例如,如果将echo传递给read,则变量赋值将“丢失”,因为read在子shell中执行。您可以使用here-doc或here-string使其在当前shell中执行:

read -a var <<< "some text"

这是您可能看到的另一个构造的示例,称为“here-string”,类似于here-doc。

请参阅thisthis