我有一个包含函数和函数调用的脚本。在这个功能里面有一个遗传装置:
#!/bin/bash
DWA() {
......
mysql -u root -p <<-MYSQL
......
MYSQL
}
DWA执行中断时会出现一个有关遗传分隔符的错误(可能是因为分隔符MYSQL被缩进)。
当我删除所有引线(空格/制表符)时,问题没有发生。
给定的函数剥去所有前导制表符(我不知道其他类型的引线,比如空格),为什么我会遇到这个问题,如果有的话,可以对此做些什么呢?
发布于 2017-12-03 00:08:49
您可能没有用选项卡缩进您的本地文档。黑尔文档的每一行都必须缩进一个制表符,包括第一行(在其中引入分隔符)。下面是您的一个测试用例:
echo -e 'function heredoc() {\n\tcat <<-HEREDOC\n\t\tThis is a test\tHEREDOC\n} heredoc' > heredoc.sh尝试运行该命令,然后运行heredoc.sh。您应该得到以下输出:
This is a test.或者,下面是相同的脚本,但是第一行缩进了空格而不是制表符:
echo -e 'function heredoc() {\n cat <<-HEREDOC\n\t\tThis is a test\tHEREDOC\n} heredoc' > heredoc2.sh如果我们运行heredoc2.sh,我们将得到以下错误输出:
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 filehttps://unix.stackexchange.com/questions/408451
复制相似问题