原文:http://blog.csdn.net/apache0554/article/details/45508631

-----------------------------------------------------------------------------------

两个都是获取stdin,并在EOF处结束stdin,输出stdout。

但是<<-是什么意思呢?

先来看man中的说明:

If the redirection operator is <<-, then all leading tab characters are stripped from input lines and  the  line  containing  delimiter.   

翻译过来的意思就是:如果重定向的操作符是<<-,那么分界符(EOF)所在行的开头部分的制表符(Tab)都将被去除。

这可以解决由于脚本中的自然缩进产生的制表符。

通俗一点的解释:

在我们使用cat <<EOF时,我们输入完成后,需要在一个新的一行输入EOF结束stdin的输入。EOF必须顶行写,前面不能用制表符或者空格。

比如,下面的语句就不会出错:

  1. cat <<EOF
  2. Hello,world!
  3. EOF

如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。

而<<-就是为了解决这一问题:
  1. cat <<-EOF
  2. Hello,world!
  3. EOF

上面的写法,虽然最后的EOF前面有多个制表符和空格,但仍然会被当做结束分界符,表示stdin的结束。

这就是<<和<<-的区别。

最新文章

  1. Xamarin For Visual Studio 3.0.54.0 完整离线破解版(C# 开发Android、IOS工具 吾乐吧软件站分享)
  2. swift language
  3. plist基本操作
  4. poj 3468
  5. C#中 ? 和?? 的用法
  6. USACO3.22Stringsobits
  7. BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)
  8. ZeroMQ(JAVA)中的数据流,SessionBase与SocketBase
  9. sql查询每门课程成绩最高的学生
  10. Shell 获取当前执行脚本的路径
  11. Python爬虫(十二)_XPath与lxml类库
  12. 《Thinking in Android 9.0 系统开发源码钻研录》
  13. Django-rest-framework 接口实现 Serializer 使用
  14. bmi
  15. 从中央仓库下载所想要的jar包
  16. 10.23JS日记
  17. python的学习之路day3
  18. MySQL update 语句与标准SQL不同的地方
  19. Cookie和Session机制详解
  20. Ubuntu下搭建Spark运行环境

热门文章

  1. akka设计模式系列-消息模型
  2. 哈夫曼编码译码系统(c/c++)
  3. Saiku导出excel指标列无线条以及0与空值显示问题(三十二)
  4. 基于Android SDK安装PhoneGap框架
  5. SCOI2014题解
  6. 关于DOM操作的相关案例
  7. 学习Objective-C入门教程(分享)
  8. [hihocoder][Offer收割]编程练习赛57
  9. 元素属性的添加删除(原生js)
  10. Android studio在使用过程中的问题总汇!