我有一个包含函数和函数调用的脚本。在函数内部有一个heredocument:
#!/bin/bash
DWA() {
......
mysql -u root -p <<-MYSQL
......
MYSQL
}
DWA
问题
执行因有关 heredocument 分隔符的错误而中断(可能是由于分隔符MYSQL
被缩进)。
当我删除所有潜在客户(空格/制表符)时,问题没有发生。
我的问题
给定函数剥离所有前导选项卡(我不知道其他类型的前导,如空格),为什么我会遇到这个问题,如果有的话,可以做些什么来解决这个问题?
你可能没有用标签缩进你的heredoc。heredoc 的每一行都必须使用制表符缩进,包括第一行(引入分隔符的地方)。这是一个测试用例:
尝试运行该命令,然后运行
heredoc.sh
. 您应该得到以下输出:或者,这是相同的脚本,但第一行用空格而不是制表符缩进:
如果我们运行
heredoc2.sh
,我们会得到以下错误输出: