shell 解释器中的变量和可执行文件

Variable and executable in a shell interpreter

您知道吗,如何区分 shell 解释器中的变量和可执行文件?因为我不知道如何在我的词法分析器中做到这一点。 如果有人有想法^^

谢谢, 祝你有美好的一天

马修

在正常的 Posix 风格 shell 中,不是变量赋值的语句中的第一个 "word" 是要执行的命令。变量赋值的形式为 name=value,其中 = 周围不能有任何空格,并且 name 是有效的变量名称。

除此之外,在算术评估上下文中(基本 shells 不需要),任何变量的使用都必须在 $ 之前.

识别分配是根据上下文确定的,但由于 = 是强制性的,因此很容易做到。例如,在 flex 风格的词法分析器中,您可以使用适当的开始条件启用和禁用分配识别。

如果不进一步了解您的词法分析策略,就很难提供更详细的答案。

如果您关心与 Posix shell 语法的兼容性,可以找到描述 here