【发布时间】:2009-12-16 13:02:10
【问题描述】:
我知道这不是什么新鲜事,而且已经做过好几次了。但我正在寻找一些参考实现(甚至只是参考设计)作为“最佳实践指南”。我们有一个实时嵌入式环境,其想法是能够使用“调试外壳”来调用一些命令。示例:“SomeDevice print reg xyz”将请求 SomeDevice 子系统打印名为 xyz 的寄存器的值。
【问题讨论】:
-
您在寻找什么功能?解析几个词和调用函数一点都不难,但是如果你想引用等,就变得更加困难了。
-
我不知道什么是“引用”。我主要寻找“解析关键字和调用函数”部分。但是,它需要是通用的和可扩展的。我们还希望有历史记录、帮助、制表符补全等。但其核心仍然应该是解析单词和调用函数。可能会有一个主模块解析前一个或两个关键字,然后将控制权传递给另一个模块进行其余的解析和命令完成等。没什么复杂的。但是我可以看看现有的实现吗?
-
在我建议的实现中,历史和帮助只是简单地实现为函数(因为您可以调用具有全局范围的任何函数)。 shell 表达式求值器维护一个历史缓冲区和 h() 函数(括号对于简单的调用是可选的,因此在命令行中只有“h”),提供缓冲区的编号列表并提示选择。 vxWorks 还使用类似 vi 的光标控制来允许滚动历史缓冲区;我选择不这样做。
-
“引用等”!?那是什么?
-
我假设“引用”是指能够引用命令行参数,例如带有空格的文件名、转义序列(例如 \n、\t、\r)和类似的“智能”解析命令行时的解释。
标签: shell command-line embedded