cat “<<”EOF与cat “<<”-EOF的区别

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

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必须顶行写,前面不能用制表符或者空格。

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

cat <<EOF
Hello,world!
EOF

如果结束分解符EOF前有制表符或者空格,则EOF不会被当做结束分界符,只会继续被当做stdin来输入。 而<<-就是为了解决这一问题:

cat <<-EOF
Hello,world!
      EOF

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

注:标题无双引号

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/ose/3081.html

(0)
上一篇 2021年1月3日 17:52
下一篇 2021年1月4日 02:33

相关推荐

  • Linux命令export的用法

    export命令用于设置和显示环境变量。 语法: 1.不带任何参数:查看所有导出的变量。 2.-p:查看当前shell上的所有导出变量。 3.-f:如果名称引用函数,则必须使用它。如果未使用-f,则导出将假定名称为变量。 4.name [=值]:您可以使用以下语法在导出之前分配值。 例如:配置环境变量PATH,PATH…

    操作系统经验 2020年11月26日
    02.5K0
  • fdisk初始化云硬盘(小于2TB)

    1.前提条件 已 挂载云硬盘 至云服务器。 2.初始化云硬盘(Linux) 请根据您实际使用场景选择初始化方式: 若整块硬盘只呈现为一个独立的分区(即不存在多个逻辑盘,如 vdb1 和 vdb2 ),强烈推荐您不使用分区,直接 在裸设备上构建文件系统 (本文只介绍此方法)。 若整块硬盘需要呈现为多个逻辑分区(即存在多个…

    操作系统经验 2019年12月30日
    02.8K0
  • Shell四种运行方式(启动方式)

    Shell 是一个应用程序,它的一端连接着 Linux 内核,另一端连接着用户。Shell 是用户和 Linux 系统沟通的桥梁,我们都是通过 Shell 来管理 Linux 系统。 我们可以直接使用 Shell,也可以输入用户名和密码后再使用 Shell;第一种叫做非登录式,第二种叫做登录式。 我们可以在 Shell…

    操作系统经验 2020年11月26日
    01.2K0

发表评论

登录后才能评论