首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于"cat <- _EOF_“的shell脚本

关于"cat <- _EOF_“的shell脚本
EN

Stack Overflow用户
提问于 2014-02-10 15:56:10
回答 2查看 2.5K关注 0票数 4

shell脚本中的

代码语言:javascript
复制
line 6: warning: here-document at line 2 delimited by end-of-file (wanted `_EOF_')

下面是代码:

代码语言:javascript
复制
#!/bin/bash
    cat <<- _EOF_  
        test:  
        1. test  
        0. test test   
    _EOF_

但这是对的。

代码语言:javascript
复制
#!/bin/bash
cat <<- _EOF_  
    test:  
    1. test  
    0. test test   
_EOF_  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-10 16:02:11

根据巴什手册:

如果重定向运算符<-,则从输入行和包含分隔符的行中删除所有前导制表符字符。这使得shell脚本中的文档可以以一种自然的方式缩进。

也就是说,如果您用空格而不是制表符缩进这些行,它将失败。

另一个看不见的问题是,终止词必须单独出现在行上,周围什么都没有。唯一的例外是引导选项卡,如果您使用<<-而不是<<。因此,_EOF_行上的尾随空间就可以做到这一点。

顺便说一句,测试确实表明Bash可以容忍<<-和终止词之间的空间,但是它在Bash手册中是不允许的。这可能是一个可移植性问题。

票数 5
EN

Stack Overflow用户

发布于 2014-02-10 16:15:19

here document <<-<<-选项取消了文档正文中的前导选项卡,但没有空格

所以用选项卡替换空格,你的警告信息就会消失。

例子:

代码语言:javascript
复制
if true;
then
        cat <<- _EOF_
            test:
            1. test
            0. test test
        _EOF_

fi

参考链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21681843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档