带反斜杠的 Heredoc

Heredoc with backslash

有什么区别

cat >test.txt <<\EOF
hello
world
EOF

cat >test2.txt << EOF
hello
world
EOF

我正在编写基于 ANTLR 的语法着色,<< 之后的 \ 令我恼火(在示例文件中找到)。这是什么意思?我可以像 - 这样的语法着色忽略它吗?

来自POSIX standard on here-document syntax

If any part of word [the thing after << - GD] is quoted, the delimiter shall be formed by performing quote removal on word, and the here-document lines shall not be expanded. Otherwise, the delimiter shall be the word itself.

所以...您是否为此处文档中的 shell 扩展着色?也就是说,在这样的事情中:

cat >test2.txt << EOF
hello $somevar
world $(somecommand)
EOF

您是否将 $somevar$(somecommand) 分别着色为变量和命令扩展?如果是这样,如果分隔符被引号或转义,则需要禁用它。