5 SC1044
John Gardner edited this page 2021-12-22 19:42:52 +11:00

Couldn't find end token EOF in the here document.

Problematic code:

cat << EOF
  Hello World

Correct code:

cat << EOF
  Hello World
EOF

Rationale:

The << here document (aka heredoc) was not properly terminated. The terminating token needs to be on a separate line without indenting (or indented with tabs only when using <<-).

Note that you can not put here documents in one liners. For such use cases, use a <<< here string:

cat << EOF  hello world  EOF   # Wrong: data and terminator can not be on the same line
cat <<< "hello world"          # Correct

Exceptions:

None

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!