重要
1.简介
EOF是(END Of File)的缩写,表示自定义终止符。既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d 就代表EOF。
EOF一般会配合cat能够多行文本输出。
2. 用法说明
其用法如下:
| |
还可以自定义,比如自定义:
| |
通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号<: 输入重定向>: 输出重定向>>: 输出重定向,进行追加,不会覆盖之前内容<<: 标准输入来自命令行的一对分隔号的中间内容
| |
输出为:
| |
cat的操作对象是文件,而在上面例子中cat的操作对象是用户输入;用户输入是文件描述符0对应的特殊文件。标准输入0中保存了“Hello”,再用cat命令输出其中的内容。<<EOF EOF的作用就是在执行命令过程中用户自定义输入,类似于一个临时文件。
再结合重定向>,可以将<<EOF EOF的内容写入到文件中。例如:
| |
3. cat <<EOF 与 cat <<-EOF 的区别
两个都是获取stdin,并在EOF处结束stdin,输出stdout。
使用cat <<EOF时,输入完成后,需要在一个新的一行输入EOF结束stdin的输入。EOF必须顶行写,前面不能用制表符或者空格。
使用cat <<-EOF时,分界符(EOF)所在行的开头部分的制表符(Tab)都将被去除。这可以解决由于脚本中的自然缩进产生的制表符。
对应两种正确示例写法如下:
cat <<EOF,EOF顶行写
| |
cat <<-EOF,EOF前可加空格
| |
如果使用cat <<EOF,但结束分界符EOF前面有制表符或者空格,无法将EOF识别为结束分界符,只会继续被当做stdin来输入。所以会报如下报错
| |
脚本内容如下:
| |
how-can-i-write-a-heredoc-to-a-file-in-bash-script
Here Documents