shell脚本的编译器

时间:2009-08-19 00:45:16

标签: bash compiler-construction

你知道是否有任何编译bash脚本的工具?

只要翻译结果可以编译,该工具只是一个翻译器(例如,将bash脚本转换为C程序的东西)并不重要。

我正在寻找类似shc的东西(这只是一个例子 - 我知道shc不能用作编译器)。还有其他类似的工具吗?

3 个答案:

答案 0 :(得分:6)

Google搜索会显示CCsh,但会为每台计算机提供50美元的许可证。

文档说CCsh将Bourne Shell(而非bash ...)脚本编译为C代码,并且它理解如何复制50多个标准命令的功能,而不需要fork它们。

但CCsh不是开源的,所以如果它不能满足您的需求(或期望),您将无法查看源代码来找出原因。

答案 1 :(得分:1)

我认为你不会找到任何东西,因为你无法真正“编译”一个shell脚本。您可以编写一个简单的脚本,将所有行转换为system(3)的调用,然后将其“编译”为C程序,但这不会对您当前使用的任何内容产生重大性能提升,也可能不会正确处理变量。不要这样做。

“编译”shell脚本的问题是shell脚本只调用外部程序。

答案 2 :(得分:0)

从理论上讲,你实际上可以获得良好的性能提升。

想想所有的

if [ x"$MYVAR" == x"TheResult" ]; then echo "TheResult Happened" fi

(注意测试的调用,然后是echo,以及需要完成的解释。)

可以替换为

if ( !strcmp(myvar, "TheResult") ) printf("TheResult Happened");

在C中:没有进程启动,无需进行路径搜索。很多善良。