POSIX shell就像在Java中实现一样

Jak*_*aka 5 java bash grammar

  1. 有没有人知道POSIX shell的实现,就像用Java编写脚本的语言一样?

  2. 如果没有这个,有没有人知道我可能错过了某个地方是否有ANTLR或JavaCC语法?

编辑: 我知道我有Jython,JRuby,Groovy,JavaScript可用于编写脚本,但它们都没有类似bash的语法.

这不会用于将Java代码编写在一起,而是允许人们运行预定义的命令,这些命令可以通过大型第三方媒体资产管理系统进行操作.

我想运行如下:

ls | grep "something" > output
Run Code Online (Sandbox Code Playgroud)

其中ls和grep是Java命令.(这仅用于说明目的)

谢谢

Gil*_*il' 1

  1. 我所知道的所有 POSIX shell 实现都是用 C 编写的,但我没有特别研究过这个问题。

  2. POSIX shell(我想这就是你所说的类似 bash 的意思)语法相当复杂。词法分析和语法分析之间没有明确的区别。另一方面,解析几乎不需要任何回溯。所以解析器生成器可能没有多大帮助。

编辑,因为你已经澄清你想要 shell 语法:

我认为最好的选择是使用现有的 shell。以下是一些架构注意事项:

  • 您只需将应用程序链接到现有的 shell 中即可。添加操纵您的资产管理系统的内置程序。可能存在许可问题。这为每个 shell 实例提供一个应用程序实例。

  • 您可以使用简单的客户端-服务器架构,其中服务器是应用程序的一部分,仅响应简单的命令,没有控制逻辑,而客户端链接到 shell,不直接访问应用程序数据。一些 shell(bash、ksh、zsh)已经具有 TCP 访问方式。

    您可能不需要重新发明通信协议;考虑使用 HTTP(S),因为 HTTP(S) 的服务器和客户端实现都很容易获得。事实上,您甚至可能在客户端只使用 wget 或 curl 周围的脚本,因此根本不需要修补 shell(这会在客户端保持复杂的状态)。

如果您需要修补 shell(例如,添加内置函数),请考虑 zsh,它具有模块系统。您的应用程序(或客户端部分)将显示为定义内置函数和您需要的任何其他内容的模块(例如 zsh 发行版包括 ftp 和 mmap 等模块)。