1 用途
从标准输入(stdin) 读取一段文本,遇到 "EOF" 就停止读取,然后将文本输出到标准输出(stdout) 中。
2 语法
cat << EOF
文本信息
EOF
关键语法说明:
- <<:Linux 中的 Here Document 格式语法开始标识符;
- EOF:一个标识符,标识文本信息的开始和结束,可以是任意自定义字符,比如 begin,data 等。
- 文本信息:用户(你)想要显示在终端的内容。
3 '<< EOF' 和 '<<- EOF' 区别
If the redirection operator is <<-, then all leading tab characters are stripped from input lines and the line containing delimiter.
中文含义就是如果重定向操作符是 <<-,那么就忽略每行文本信息和结束标识符(比如上面的 EOF)中的前导制表符(tab)。
#!/bin/sh
#line 1、2、3,EOF,data 1、2、3 前面为 tab,不是空格。
cat <<- EOF
line 1
line 2
line 3
EOF
cat << DATA
data 1
data 2
data 3
DATA
执行结果:
你看,使用 '<<- ' 输出的内容会忽略每行前面的 tab。
4. 延伸
如果想从终端中输入多行文本到文件中,应当如何做呢?
cat > file << EOF
information 1
information 1
information 1
...
EOF