有时候,我们可能会使用脚本去生成一个临时文件,然后把该文件作为最终文件放入目录中。这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判断生成不同的最终文件等等。

1. cat和EOF简介

cat:该文本输出命令用于显示文本的全部内容,并全部打印输出

EOF:文本结束符,即“end of file”,表示文件内容的结束

在shell脚本中将cat与EOF组合使用,可避免使用多行echo 'xxx'打印命令方式,并实现多行文本输出的结果。常见的使用方式有以下几种:

  • cat >FileName <<EOF:新建文件并多行导入文件内容,结尾以EOF输入字符为标准输入结束;“<”是重定向,会将你输入的内容输入到目标文本中。
  • cat <<EOF >FileName,文件追加,实现多行文本的输出,cat的多行内容有$等特殊字符时,须利用转义字符\,其结尾以EOF作为输入结束,可以对已有文件内容进行编辑修改;
  • cat >FileName :可以对 file 文件内容进行编辑,一旦 file 文件存在,则 file 原来的数据被新输入数据覆盖,并且在输入的时候,光标前方没有 > 提示符(cat > file << EOF 是有的),最后,标记输入文件完成的方式也只有使用 Ctrl + C 或者 Ctrl + D

2. 说明

  • 新建文件,并导入多行文件(新建文件或覆盖文件内容)

这里写一个A.sh脚本如下:

#!/bin/bashcat > kube.txt <<EOF
OPTS="--logtostderr=false\
--v=4 \"
EOF

执行#sh A.sh脚本,再cat一下看执行结果:

OPTS="--logtostderr=false --v=4"

这里,我们修改一下脚本内容,将里边的参数--logtostderr=false,--v=0,再试一下呢:

#!/bin/bashcat > kube.txt <<EOF
OPTS="--logtostderr=true\
--v=0 \"
EOF

再cat一下查看下执行结果:

OPTS="--logtostderr=true --v=0"

这里,可以看到我们cat > FileName <<EOF 可以对 file 文件内容进行编辑,一旦 file 文件存在,则 file 原来的数据被新输入数据覆盖

当然,不通过脚本,我们在终端去手动敲:

# cat > kube-scheduler << EOF
> #文本内容
> EOF

如果使用echo打印输出,则繁琐,必须这样去写:echo -e   "#!/bin/sh \n #文本内容" > kube-scgeduler。-e表示escape。


  • 追加文件方式

cat << EOF > kube.js,内容和上边的雷同

[root@master01 scripts]# cat << EOF > kube.js
> OPTS="--logtostderr=false\
> --v=4 \"
> EOF

查看一下:

[root@master01 scripts]# cat kube.js
OPTS="--logtostderr=false--v=4 \"

这时已存在kube.js文件了,我们重新再输入不同内容试一下:

[root@master01 scripts]# cat << EOF > kube.js
> OPTS="--logtostderr=true\
> --v=0 \"
> EOF

查看一下:

[root@master01 scripts]# cat kube.js
OPTS="--logtostderr=true --v=0 \"

可以看到,我们以文件追加方式,实现多行文本的输出,cat的多行内容有$等特殊字符时,须利用转义字符\,其结尾以EOF作为输入结束,可以对已有文件内容进行编辑修改。

此时,再思考 cat > file 和 << EOF组合或者 cta << EOF >file组合在一起的行为就不是那么难了。其中 cat > file 负责创建 file 文件,并提示用户输入文件内容,<< EOF 负责显示提示符 >,并且以 EOF 判定文件内容输入结束。


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

cat和EOF的组合妙用相关推荐

  1. linux替换文件内容cat,Linux下巧用cat与EOF实现文件的替换和追加

    本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! ================================== ...

  2. linux cat eof如何指定变量,Linux cat和EOF的使用

    在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...

  3. 关于cat file,cat file EOF

    1.cat >file记录的是键盘输入,相当于从键盘创建文件,并且只能创建新文件,不能编辑已有文件.>是数据重导向,会将你输入的文本内容输出到file中. 2.cat <<EO ...

  4. Linux小技巧:cat file 和 EOF 的妙用

    一.引言 最近在学习<Kafka 权威指南>的时候,在第二章安装 Kafka 的地方看到了关于 cat 的这么一种用法: # cat > /usr/local/zookeeper/c ...

  5. linux下cat命令,关于cat >file 、cat <file <<EOF、cat <<-EOF的区别

    我们经常会碰到这样一个场景: 执行脚本的时候,需要往一个文件里自动输入N行内容. 如果是少数的几行内容,还可以用echo追加方式,但如果是很多行, 单纯用echo追加的方式就显得愚蠢之极. 这个时候, ...

  6. linux命令:bash脚本选项使用cat EOF使用 getopts选项描述

    getopts:用于描述相关信息. 选项: OPTARG  .  OPTIND bash脚本综合实验: 1.如何利用脚本,在创建脚本时,自动把相关选项添加到新的脚本中,且自动在保存 脚本后检测是否有语 ...

  7. cat EOF file

    .多行导入文件(新建文件或者覆盖文件内容) cat << EOF > abcd.txt Hello! This is a test file! Test for cat and EO ...

  8. cat <<EOF与cat <<-EOF的区别

    一.关于cat > abc.py << EOF语句的意思 在linux shell脚本中cat << EOF的语句,起到什么作用? 首先必须要说明的是EOF在这里没有特殊 ...

  9. cat - EOF标志的使用

    前提 cat命令是用于连接文件并输出到标准输出设备或指定文件中. EOF为标志,可以替换为其他字符串 代码块 ## 将文件内容作为标准输出也就是将文件内容输出到屏幕中,也可写作 cat filenam ...

  10. cat EOF追加与覆盖

    当需要将多行文件输入到文本时,如果每条都使用echo 到文件时是比较繁琐的,这种情况下可以使用cat EOF进行多行文件的覆盖或追加输入. 一.覆盖 这里有两种格式可以使用 1.格式一 #!/bin/ ...

最新文章

  1. jQuery知识简介
  2. 20145202 《信息安全系统设计基础》第8周学习总结
  3. Redis中缓存Lua 脚本
  4. 奇淫巧技-Flutter调用C#
  5. Codeforces 1065 E. Side Transmutations
  6. 论证通过!依托顶尖985大学,争创国家实验室!
  7. 一起学习Windows Phone7开发(十八. Windows Phone7 Toolkit)
  8. ubuntu安装msql5.7
  9. 独立站卖家不可缺的推广引流?
  10. 3.1.1 计算机网络之数据链路的基本概念和功能概述(转载)
  11. js系列教程5-数据结构和算法全解
  12. itextpdf 数字签名
  13. 全志F1C100s使用记录:资料索引与基础说明
  14. 调用百度API 实现车型识别
  15. 如何将.frm,.MYD,.MYI文件导入数据库
  16. 特斯拉指控华裔工程师窃密案升级 要求小鹏披露源代码
  17. 脱壳手把手入门(详细)——aspack压缩壳
  18. C++ UTF8 互转 Unicode
  19. 计算机科学丛书之第9章和第10章代码
  20. ACM集训队论文合集

热门文章

  1. 自定义 feign 调用实现 hystrix 超时、异常熔断
  2. oracle vm 4.3.12,Oracle VM VirtualBox 4.3.12_ZZZZ这个程序肿么卸载啊,卸载不了
  3. 有一定的php基础,求推荐PHP框架,本人有一定PHP基础。
  4. Spring扩展之BeanFactoryPostProcessor接口
  5. Android开发之来电电话挂断实现
  6. 部署Django REST Framework服务(Nginx + uWSGI + Django)
  7. python爬虫学习整理——爬虫入门(1)
  8. 今天修了一个bug,关于debug日志的问题
  9. 从零开始撸一个Fresco之gif和Webp动画
  10. Unity与安卓开发的一些路径知识