Bash 遗传间隔?

Bash 遗传间隔?,bash,terminal,heredoc,Bash,Terminal,Heredoc,这是一个我知道的小问题。我们正在用Ruby编写一个Bash highlighter,需要实现herdoc高亮显示。我看到的两种格式是这样的。注意EOF前的空格 cat显式指定文件描述符编号(如果有)紧跟在重定向操作符之前;但是它没有类似的要求,重定向操作符必须紧跟在单词前面。令牌识别规则意味着重定向操作符和单词之间的任何空格都将被丢弃,因此我认为任何正确的实现都应该接受这样的空格。诚然,如果不是相同的令牌识别规则意味着文件描述符编号和重定向操作符之间的空格是相同的,那么这将更加令人放心 尽管Ba

这是一个我知道的小问题。我们正在用Ruby编写一个Bash highlighter,需要实现herdoc高亮显示。我看到的两种格式是这样的。注意EOF前的空格

cat显式指定文件描述符编号(如果有)紧跟在重定向操作符之前;但是它没有类似的要求,重定向操作符必须紧跟在单词前面。令牌识别规则意味着重定向操作符和单词之间的任何空格都将被丢弃,因此我认为任何正确的实现都应该接受这样的空格。诚然,如果不是相同的令牌识别规则意味着文件描述符编号和重定向操作符之间的空格是相同的,那么这将更加令人放心


尽管Bash参考手册中关于heredocs的示例没有在单词前加空格,但它确实给出了在单词前加空格的重定向示例,POSIX规范或Bash参考手册中都没有给出任何理由认为heredocs的单词在这方面与任何其他类型的重定向中的单词有所不同,因此我不认为这是一种糟糕的做法。我认为您的语法highlighter应该同时支持这两种功能,除非项目的目标之一是为这些功能强制执行某种标准样式。

包含空格并不是错误的;这有点不寻常。