我最了解的编程语言是Java。 目前我必须编写相当多的“shell脚本”来自动化我的服务器。 有没有像“Java Shell”的东西,所以我可以用Java编写shell脚本?
你可以得到groovy和使用groovysh。 我已经做了一些事情,但是我发现perl或bash / sh对于pipe理脚本是最有用的。 像Java这样的应用程序语言在你需要做的只是执行OS命令和search文本时会增加很多开销。
没有真正的要求“shell脚本”必须用shell语言编写,如果你喜欢,你可以用C甚至是汇编语言来做任何事情。
在shell脚本的情况下,shell只不过是一种编程语言的解释器,就像Perl或PHP一样,但是对于大部分使用shell脚本来完成的工作进行了大量的优化。
从长远来看,我build议你学习bash或其他东西,这并不是很难,因为炮弹的能力非常有限,所以没有太多东西要学。
一些较轻的jvm语言有shell,但这些是解释器的前端,而不是用于系统pipe理的自定义方言。 一个好的系统shell需要具有优秀的进程和文件描述符支持,并且语法和内置简洁,我不认为存在于Java中。
你可以把编程和脚本混合在一起,比如厨师,puppet,vlad等,但是这意味着首先学习bash脚本,因为这些语言非常明智地将命令委托给shell。 像Ruby,Perl和Python这样的语言不太冗长,你会看到它们用了很多。 Java的冗长性和它的一些核心价值(做jvm中的所有事情,不要离开ide)使它非常适合这个任务。
就在这里。 我一直在使用BeanShell ,尽pipe目前还没有进行积极的开发。 它是标准Java语法的解释器,并且如果需要,还附带有graphics解释器/环境。
你可以像在BeanShell文档中描述的那样编写你的shell脚本,但是你必须为你的Java安装提供Beanshell jar文件(例如把它放到你的JRE安装的/ext/lib
文件夹中),否则java会找不到bsh.Interpreter
类。
不过,我也build议仔细看看你的shell scipting选项(你没有提到你的环境,但是使用Linux时TiZon推荐的bash是很酷的)。 使用像Java一样的全面的通用编程语言只会影响到如何使用类似shell的任务的效率,比如移动文件,调用命令等等。
你应该看看Bash脚本 。
我写了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
是的,将beanshell .jar添加到您的Javahome / jre / lib / ext目录中,然后可以像这样启动脚本:
java bsh.Interpreter myscript.bsh
PowerShell是一个可以使用C#库的面向对象的shell, 已经开放源代码并可用于Linux 。