我最了解的编程语言是Java。当前,我必须编写很多“ shell脚本”来使服务器自动化。是否有类似“ Java Shell”的东西,所以我可以用Java编写Shell脚本?
我最了解的编程语言是Java。当前,我必须编写很多“ shell脚本”来使服务器自动化。是否有类似“ Java Shell”的东西,所以我可以用Java编写Shell脚本?
Answers:
您可以使用groovysh并使用groovysh。我已经做了一些事情,但是我发现perl或bash / sh对于执行管理脚本最有用。当您所需要做的就是执行OS命令和搜索文本时,像Java这样的应用程序语言会增加很多开销。
没有真正的要求“ shell脚本”必须用shell语言编写,如果愿意,您可以使用C甚至Assembler进行所有操作。
在Shell脚本的上下文中,Shell只不过是一种编程语言的解释器,就像Perl或PHP一样,但是针对您通常使用Shell脚本完成的工作进行了优化。
从长远来看,我建议您学习bash之类的东西,这并不难,因为shell的能力非常有限,因此无需学习太多。
就在这里。我一直不时使用BeanShell,即使目前它还没有处于活跃的开发中。它是标准Java语法的解释器,并且如果需要,还带有图形解释器/环境。
您可以按照BeanShell docs中的描述编写Shell脚本,但是为此必须使Beanshell jar文件可用于Java安装(例如,将其放入/ext/lib
JRE安装的文件夹中),否则Java将找不到bsh.Interpreter
该类。 。
但是,我还建议您仔细看一下您的shell加密选项(您没有提到您的环境,但是使用Linux时TiZon对bash的建议很酷)。仅当尝试提高类似于shell的任务(例如,移动文件,调用命令等)的效率时,才使用成熟的通用编程语言(如Java)进行操作。
我编写了jpad.io,以允许运行Java“ shell脚本”和交互式摘录,同时还提供了很好的可视化结果。这说明了我的意思:
要使用此语言作为脚本语言来复制文件,请使用:http : //jpad.io/example/1I/fileio
final File file = new File("outt.csv");
Object o = new int[] {1,2,3};
JPad.writeCsv(o, file);
java.nio.file.Files.copy(file.toPath(), Paths.get("copy.csv"));
您也可以从命令行运行以下命令:
> jpad fileio.jpad
> dir
29/04/2017 13:30 <DIR> .
29/04/2017 13:30 <DIR> ..
29/04/2017 13:30 16 copy.csv
29/04/2017 13:30 160 fileio.jpad
29/04/2017 13:30 16 outt.csv
PowerShell是可以使用C#库的面向对象的外壳,已经开源并且可用于Linux。