From the Bash manual:
If the redirection operator is <<-, then all leading tab characters are stripped from input lines and the line containing delimiter. This allows here-documents within shell scripts to be indented in a natural fashion.
That is, it will fail if you have indented these lines with spaces, rather than tabs.
Another invisible problem is that the termination word must appear on the line, alone, with nothing around it. The only exception is leading tabs, if you use <<-
instead of <<
. So, a trailing space on the _EOF_
line would do this.
By the way, testing does show that Bash will tolerate a space between <<-
and the termination word, but it isn't shown as allowed in the Bash manual. This might be a portability problem.