【发布时间】:2019-12-15 20:14:15
【问题描述】:
我正在编写一个允许本地函数命名空间的实验性 Bash 模块系统,我的第一个想法是编写一个 Bash 函数解析器,它将逐行读取函数代码并在每个函数/变量名称前加上 <module-name>. (即模块 module 中的函数 func 将变为 module.func - 可以再次导入到另一个模块中,如 module_2.module.func 等等;函数内部的变量将被命名 - 函数 @987654327 内的变量 var @ 模块中的 module 将变为 __module_func_var)。
但是,为了做到这一点,我需要一种方法来检测哪些名称是变量,并用传输的导入名称替换它们在函数中的所有出现。像variable=[...] 这样的琐碎案例很容易解析,但还有无数其他情况不是那么琐碎的——while read variable; do [...] done 和 variable2="asdf${variable//_/+}" 呢?
在我看来,为了做到这一点,我需要深入研究 Bash 的解析机制或阅读一本关于编程语言的书——但是为了实现我上面解释的内容,我该从哪里开始呢?
【问题讨论】:
标签: bash parsing variables module namespaces