有人知道在 Java 中编写脚本的类似 POSIX shell 语言的实现吗?
如果这不可用,有人知道我可能错过的某处是否有可用的 ANTLR 或 JavaCC 语法吗?
编辑: 我知道我有 Jython、JRuby、Groovy、JavaScript 可用于编写脚本,但它们都没有类似 bash 的语法。
这不会用于一起编写 Java 代码脚本,而是允许人们运行预定义的命令,这些命令将使用大型第三方媒体 Assets 管理系统进行操作。
我想运行这样的东西:
ls | grep "something" > output
其中 ls 和 grep 是 Java 命令。 (这只是为了说明目的)
谢谢
最佳答案
我所知道的所有 POSIX shell 实现都是用 C 编写的,但我没有特别研究过这个问题。
POSIX shell(我假设这就是您所说的类似 bash 的意思)语法相当复杂。词法分析和解析之间没有明确的区别。另一方面,解析几乎不需要任何回溯。所以解析器生成器可能帮不上什么忙。
编辑 因为你已经澄清你想要 shell 语法:
我认为最好的办法是使用现有的 shell。以下是一些架构注意事项:
您可以将您的应用程序链接到现有的 shell 中。添加操纵您的 Assets 管理系统的内置插件。可能存在许可问题。这为每个 shell 实例提供了一个应用程序实例。
您可以使用简单的客户端-服务器架构,其中服务器是应用程序的一部分,只响应没有控制逻辑的简单命令,客户端链接到 shell 中,不访问应用程序数据直接地。一些 shell(bash、ksh、zsh)已经具有用于 TCP 访问的方法。
您可能不需要重新发明一种通信协议(protocol);考虑通过 HTTP(S),它的服务器和客户端实现很容易获得。事实上,您甚至可以在客户端只使用围绕 wget 或 curl 的脚本,因此根本不需要修补 shell(这会使客户端保持复杂的状态)。
<
如果您需要修补 shell(例如,添加内置函数),请考虑具有模块系统的 zsh。您的应用程序(或客户端部分)将显示为定义内置函数和您需要的任何其他内容的模块(例如 zsh 发行版包括 ftp 和 mmap 等模块)。
关于java - 类似于 POSIX shell 的 Java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399075/