在shell编程中,“EOF”通常与“<<”结合使用,“<<EOF”表示后续的输入作为子命令或子shell的输入,直到遇到“EOF”,再次返回到主调用shell,可将其理解为分界符(delimiter)。
EOF是End of file的缩写,自定义终止符。
既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:
交互式程序 << EOF
command1
command2
...
EOF
”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。
"EOF"一般常和cat命令连用,通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号:
- <:输入重定向
- >:输出重定向
- >>:输出重定向,进行追加,不会覆盖之前的内容
- <<:标准输入来自命令行的一对分隔号的中间内容
cat << EOF
> 100
> 200
> 300
> EOF
cat >> filename << EOF
100
200
300
EOF
# cat filename
100
200
300
注意:最后的”EOF“必须单独占一行。且需要顶格写,前面不能有任何(包括空格)字符
$a=<< “EOF” 的意思就是说:下一行开始,直到遇见“EOF”为止,所有的字符都按照指定的格式存入变量a中。