here文档  here doc EOF重定向

http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html

在shell脚本程序中,向一条命令传递输入的一种特殊方法是使用here文档。一个here document就是一段带有特殊目的的代码段。它使用I/O重定向的形式将一个命令序列传递到一个交互程序或者命令中。它允许一条命令在获得输入数据时就好像是在读取一个文件或键盘一样,而实际是从脚本程序中得到输入数据。格式:

COMMAND <<SpecialString
...
SpecialString
SpecialString用来界定命令序列的范围,是一个特殊的字符序列,用来界定命令序列的范围,可自定义,但不能出现在传递命令的文档内容中。
使用举例:

1.使用cat打印多行消息,也可重定向哦(echo 有点麻烦了),同样支持参数替换哦

cat <<EOF > /tmp/test
this is here doc!
date
$HOME
EOF
this is here doc!
date
/home/xiangzi888

#重写
cat > /tmp/a.txt<< EOF
[client]
port            = $port
socket            = /data/mysql/mysql$port/tmp/mysql.sock   [mysqld_safe]
#malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so
EOF#追加
cat >> /tmp/a.txt<< EOF
[client]
port            = $port
socket            = /data/mysql/mysql$port/tmp/mysql.sock   [mysqld_safe]
#malloc-lib= /usr/local/mysql/lib/mysql/libjemalloc.so
EOF

2.设置变量

var=$(cat <<EOF
content
EOF
)

3. 广播: 将消息发送给每个登陆的用户

wall <<HALT
E-mail your noontime orders for pizza to the system administrator.
# more messages
# 注意: 'wall'命令会把注释行也打印出来.
HALT

4.带有抑制tab功能的多行消息(去掉每行前面的TAB字符)

cat <<-EOF
this is here doc!
date doesn't work
EOF

5.关闭变量替换的功能

cat <<'EOF'
$HOME
doesn't work here!
EOF

6.生成另外一个脚本(比较诡异!)

(cat <<'EOF'
#!/bin/bash
#  Note that since we are inside a subshell,
#+ we can't access variables in the "outside" script.
echo "Generated file will be named:  /tmp/script.sh"
#  Instead, the result is literal output.
a=7
b=3
c=$(($a * $b))
echo "c = $c"
exit 0
EOF
) > /tmp/script.sh

7.here doc与函数

#!/bin/bash
#这个函数看起来就是一个交互函数, 但是...
GetPersonalData ()
{read firstnameread lastnameread address
}# 给上边的函数提供输入.
GetPersonalData <<DATA
Robert
Bozeman
Hust
DATA

8.‘匿名’here文档,不显示!(利用 : 可以注释掉一段代码块,或者写一个自文档化(self-documenting)的脚本,详见:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/here-docs.html)

#!/bin/bash
# 如果其中某个变量没被设置, 那么就打印错误信息.
: <<TESTVARIABLES
${HOSTNAME?}${USER?}${MAIL?}
TESTVARIABLESexit 0

9.一些注意事项

a.某些工具是不能放入here document中运行的。

b.结尾的limit string, 就是here document最后一行的limit string, 必须从第一个字符开始. 它的前面不能够有任何前置的空白. 而在这个limit string后边的空白也会引起异常. 空白将会阻止limit string的识别.
c.对于那些使用"here document", 并且非常复杂的任务, 最好考虑使用expect脚本语言, 这种语言就是为了达到向交互程序添加输入的目的而量身定做的.

f

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/7410968.html

here文档 here doc EOF重定向相关推荐

  1. R语言使用compareGroups包compareGroups函数生成表统计表、createTable函数创建二元表、并导出结果到文档(doc、csv、xlsx、pdf)

    R语言使用compareGroups包compareGroups函数生成表统计表.createTable函数创建二元表.并导出结果到文档(doc.csv.xlsx.pdf) 目录 R语言使用compa ...

  2. 张洪斌 html css,网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源KC11120100008_设计文档课件.doc...

    网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源KC11120100008_设计文档课件.doc <课程案例 --案例 图3-1 网站div结构布局示意图 3.2界 ...

  3. 关于java代码中的注释问题。(类中方法的注释,我们一般都要写上这个方法的文档(doc),方法的参数也要有它的文档)

    比如 /** *  显示人员信息列表 *  @param userId 用户ID *  @return  return  返回用户列表 */ 这里面的汉子信息,也就是文档(doc)都不应该缺少,否则, ...

  4. Discuz!x1.5实现在线文档(doc、ppt、pdf)播放

    实现在线文档(doc.ppt.pdf).视频等全攻略 一直在弄个中医教学方面的网站,有很多资料想用于教学,有些资料又不想学员下载.于是一直关注如何实现在线文档的功能,在论坛里学习了一段时间,加上自己 ...

  5. eclipse的java帮助文档_java在Eclipse中文apidoc帮助文档导入.doc

    今天一下午都在整java的api. 我的目标是在eclipse平台中用鼠标点击java的api就会自动显示出中文的注释.并且能在help中方便地搜索java的api. 这其实是使用bada开发平台后留 ...

  6. 百度DOC php,PHP对接百度文档服务DOC

    生成认证字符串需要用到的工具类 namespace App\Service; class HttpUtil { // 根据RFC 3986,除了: // 1.大小写英文字符 // 2.阿拉伯数字 // ...

  7. 安卓使用POI读取及修改Word文档(.doc格式)

    前言:如果你可爱的项目经理要求安卓端的你来操作word实现各种功能,不要犹豫,直接动之以情晓之以理,因为这本来就是java的poi,安卓虽然源自java,但对于java的很多东西是不支持的,已有的各种 ...

  8. 在网页中在线查看文档(doc、docx 、xls 、xlsx、 pdf 、swf )

    步骤一:(涉及到的工具) 在线查看使用FlexPaper软件(http://flexpaper.devaldi.com/download/) doc.docs.xls.xlsx转换dpf工具openo ...

  9. 服务器的表格修复原来的内容,数据恢复 数据修复 远程数据恢复 EXCEL文件修复 XLS表格修复 WORD文档修复 DOC档案修复 - 慧龙软件服务中心...

    深圳市慧龙软件服务中心数据恢复服务项目 一.照片数据恢复,找回丢失的照片文件 可恢复的照片文件格式包括JPG.CR2.NEF.DNG.ARW.ORF.PEF.RAW.SR2.RAF.X3F等. 二.视 ...

最新文章

  1. Synchronize读脏解决
  2. 《番茄工作法图解》作者亲身讲解:这些最佳实践可以帮你筛选出那个最重要的任务...
  3. 【转载】Spring Boot 过滤器、监听器、拦截器的使用
  4. java锁以及双重检查
  5. Android 加入一个动作按钮
  6. Vue学习笔记之12-前端模块化
  7. 在Oracle的FORM中对不同的状态采取不同的颜色显示
  8. 几款好用的滤波器设计软件
  9. sql——手机号码归属地、身份证前六位归属地、省市区级联
  10. mysql 存储过程 对象_【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改...
  11. 三阶金字塔魔方还原 - 3步无公式
  12. python爬取微博热搜显示到折线图_Python爬取新浪微博热搜榜-Go语言中文社区
  13. ESP8266 上电 boot 模式
  14. 使用git管理文件版本(本地仓库)
  15. 基于51单片机的多功能智能语音循迹避障小车
  16. TemplateInputException:template might not exist or might not be accessible
  17. 服务器文件路径的例子,完整SQL Server实例迁移案例
  18. 2-1、IOC思想以及实现
  19. 基于若依开发物品管理系统(springboot+vue)
  20. netflow流量分析工具 linux,Linux安装Nfdump和Nfsen图形界面分析netflow数据

热门文章

  1. python web框架 多线程_python 简单web框架: Bottle
  2. php本地怎么接受小程序图片,怎么把本地图片当作小程序背景
  3. CodeForces - 1245A Good ol' Numbers Coloring (思维)
  4. PADS Layout中的 无模式命令
  5. 在python中使用grpc和protobuf
  6. C++笔记——指针函数/函数指针
  7. 单光子探测技术应用_我如何最终在光学/光子学应用程序中使用机器学习作为博士学位
  8. pytorch图像分类_使用PyTorch和Streamlit创建图像分类Web应用
  9. 怎样在sqlite3上执行SQL语句
  10. 负债的阶梯,你在第几层?