重要
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