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

一、cat和EOF

cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;
EOF是“end of file”,表示文本结束符。
结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。

二、使用

看例子是最快的熟悉方法:

# cat << EOF > test.sh
> #!/bin/bash
> #you Shell script writes here.
> EOF

结果:

引用
# cat test.sh
#!/bin/bash
#you Shell script writes here.

可以看到,test.sh的内容就是cat生成的内容。

三、其他写法
1、追加文件

# cat << EOF >> test.sh

2、换一种写法

# cat > test.sh << EOF

3、EOF只是标识,不是固定的

# cat << HHH > iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHH

这里的“HHH”就代替了“EOF”的功能。结果是相同的。

引用
# cat iii.txt
sdlkfjksl
sdkjflk
asdlfj

4、非脚本中
如果不是在脚本中,我们可以用Ctrl-D输出EOF的标识

# cat > iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk
Ctrl-D

结果:

引用
# cat iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk

※关于“>”、“>>”、“<”、“<<”等的意思,请自行查看bash的介绍

Shell脚本——cat/EOF输出多行的更多相关文章

  1. Java实践-远程调用Shell脚本并获取输出信息

    1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-s ...

  2. shell脚本监控Flume输出到HDFS上文件合法性

    在使用flume中发现由于网络.HDFS等其它原因,使得经过Flume收集到HDFS上得日志有一些异常,表现为: 1.有未关闭的文件:以tmp(默认)结尾的文件.加入存到HDFS上得文件应该是gz压缩 ...

  3. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  4. Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出

    http://blog.csdn.net/gyanp/article/details/7903056 1) 格式调整有以下参数 set echo on/off                     ...

  5. shell脚本按当前日期输出日志

    shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...

  6. shell下cat EOF中变量$处理

    在使用cat EOF中出现$变量通常会直接被执行,显示执行的结果.若想保持$变量不变需要使用 \ 符进行注释 [root@localhost ~]# cat >> aa.txt <& ...

  7. shell脚本的“奇迹暖暖“之行 -- printf彩色输出

    printf \n" \n代表换行 "\e[1;30m \e[0m" 深灰 "\e[1;31m \e[0m" 红色 "\e[1;32m \e ...

  8. shell脚本修改文本中匹配行之前的行的方法

    原创文件,欢迎阅读,禁止转载. 例子中是把 finish 前一行的 "yes" 改成 "YES"有一个方法就是利用sed+awk一起来完成. zjk@zjk:~ ...

  9. shell用法 (cat << EOF)

    下面的语句会创建不存在的secure.config,如果存在直接追加,然后把多行内容: [database]        password = gerrit 写入文件secure.config ca ...

随机推荐

  1. android 监听返回键

    android监听返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE ...

  2. zabbix_Agent 监控配置说明

    Agent 监控配置说明 Linux安装Agent 1.查看系统版本 查看系统版本 uname -a1根据系统版本下载对应的zabbix-agent版本安装 下载地址:http://repo.zabb ...

  3. shell参数传递

    应用实例: #!/bin/bash #运行:bash para_tran.bash text1.txt text2.txt #"set $1"设置存储传入的第一参数 #" ...

  4. HTML学习——标签

    1.</hr>效果: 2.<q>简短文本引用, <blockquote>长文本引用, 表象:为文本添加一个双引号,实:一个语义,引用别人的话语. 3.&nb ...

  5. TCP全连接队列和半连接队列已满之后的连接建立过程抓包分析[转]

    最近项目需要做单机100万长连接与高并发的服务器,我们开发完服务器以后,通过自己搭的高速压测框架压测服务端的时候,发生了奇怪的现象,就是服务端莫名其妙的少接收了连接,造成了数据包的丢失,通过网上查资料 ...

  6. Windows远程桌面卡的解决办法

    Windows远程桌面卡的解决办法 如果在网络没有什么大问题的情况下,可以尝试以下操作. 1.显示中颜色选择 增强色15位 2.体验中 设置成下图的样子 然后在尝试连接试试有没有好点

  7. Spring源码情操陶冶-ComponentScanBeanDefinitionParser文件扫描解析器

    承接前文Spring源码情操陶冶-自定义节点的解析,本文讲述spring通过context:component-scan节点干了什么事 ComponentScanBeanDefinitionParse ...

  8. js中定义对象的几种方式

    转载:http://blog.sina.com.cn/s/blog_60f632050100wz7h.html (1)基于已有对象的扩充方法:适用于临时构建对象,弊端:每次构建对象都要新建一个. va ...

  9. BZOJ 3160: 万径人踪灭 [fft manacher]

    3160: 万径人踪灭 题意:求一个序列有多少不连续的回文子序列 一开始zz了直接用\(2^{r_i}-1\) 总-回文子串 后者用manacher处理 前者,考虑回文有两种对称形式(以元素/缝隙作为 ...

  10. POJ Building roads [二分答案 2SAT]

    睡觉啦 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...