cat:该文本输出命令用于显示文本的全部内容,并全部打印输出 EOF:文本结束符,即“end of file”,表示文件内容的结束 |
有时候,我们可能会使用脚本去生成一个临时文件,然后把该文件作为最终文件放入目录中。这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判断生成不同的最终文件等等。
在shell脚本中将cat与EOF组合使用,可避免使用多行echo 'xxx'打印命令方式,并实现多行文本输出的结果。常见的使用方式有以下几种:
cat >FileName <<EOF:新建文件并多行导入文件内容,结尾以EOF输入字符为标准输入结束;“<”是重定向,会将你输入的内容输入到目标文本中。
cat <FileName,文件追加,实现多行文本的输出,cat的多行内容有$等特殊字符时,须利用转义字符\,其结尾以EOF作为输入结束,可以对已有文件内容进行编辑修改;
cat >FileName :可以对 file 文件内容进行编辑,一旦 file 文件存在,则 file 原来的数据被新输入数据覆盖,并且在输入的时候,光标前方没有 > 提示符(cat > file << EOF 是有的),最后,标记输入文件完成的方式也只有使用 Ctrl + C 或者 Ctrl + D
这里写一个A.sh脚本如下:
#!/bin/bash
cat > kube.txt <<EOF
OPTS="--logtostderr=false\
--v=4 \"
EOF
执行#sh A.sh脚本,再cat一下看执行结果:
OPTS="--logtostderr=false --v=4"
我们以文件追加方式,实现多行文本的输出,cat的多行内容有$等特殊字符时,须利用转义字符\,其结尾以EOF作为输入结束,可以对已有文件内容进行编辑修改。
此时,再思考 cat > file 和 << EOF组合或者 cta << EOF >file组合在一起的行为就不是那么难了。其中 cat > file 负责创建 file 文件,并提示用户输入文件内容,<,并且以 EOF 判定文件内容输入结束。