首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内缩进的Heredocument在执行时失败。

问函数内缩进的Heredocument在执行时失败。
EN

Unix & Linux用户
提问于 2017-12-02 23:28:08
回答 1查看 794关注 0票数 -1

我有一个包含函数和函数调用的脚本。在这个功能里面有一个遗传装置:

代码语言:javascript
复制
#!/bin/bash

DWA() {
    ......
    mysql -u root -p <<-MYSQL
        ......
    MYSQL
}
DWA

问题

执行中断时会出现一个有关遗传分隔符的错误(可能是因为分隔符MYSQL被缩进)。

当我删除所有引线(空格/制表符)时,问题没有发生。

我的问题

给定的函数剥去所有前导制表符(我不知道其他类型的引线,比如空格),为什么我会遇到这个问题,如果有的话,可以对此做些什么呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2017-12-03 00:08:49

您可能没有用选项卡缩进您的本地文档。黑尔文档的每一行都必须缩进一个制表符,包括第一行(在其中引入分隔符)。下面是您的一个测试用例:

代码语言:javascript
复制
echo -e 'function heredoc() {\n\tcat <<-HEREDOC\n\t\tThis is a test\tHEREDOC\n} heredoc' > heredoc.sh

尝试运行该命令,然后运行heredoc.sh。您应该得到以下输出:

代码语言:javascript
复制
This is a test.

或者,下面是相同的脚本,但是第一行缩进了空格而不是制表符:

代码语言:javascript
复制
    echo -e 'function heredoc() {\n    cat <<-HEREDOC\n\t\tThis is a test\tHEREDOC\n} heredoc' > heredoc2.sh

如果我们运行heredoc2.sh,我们将得到以下错误输出:

代码语言:javascript
复制
bash heredoc2.sh 
heredoc2.sh: line 4: warning: here-document at line 2 delimited by end-of-file (wanted `HEREDOC')
heredoc2.sh: line 5: syntax error: unexpected end of file
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/408451

复制
相关文章

相似问题

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