是否应该用java编写包含shell命令的程序?

AAa*_*Aaa 0 java linux shell scripting

我有一个shell脚本,它执行各种命令,如查杀进程,通过scp复制文件,通过ssh执行远程命令等等...

问题是这个脚本很难维护,很难进行单元测试.此外,我希望将来更改它,以便它可以与xml配置文件一起使用,我认为它不能轻易地用shell脚本完成.所以,我想将它转换为java应用程序,但只是使用ProcessBuilder运行许多命令感觉不对.

另一方面,为今天在shell命令(如java ssh客户端,用于linux进程的java API等等)中轻松解决的每个"问题"搜索java解决方案,也感觉不对.

编辑:我确信我的程序将在Linux环境中运行,因此跨平台在这里不是问题.

有什么建议吗?

Dan*_*ker 5

我使用了很多语言来编写shell脚本; 从Python,PHP到Java - 我不断回到使用正确的工具来完成工作.

在Linux世界中,bash脚本通常足够强大,而且perl有很多很好的操作系统支持.

它让我们的一些开发人员感到惊讶,你可以在bash脚本中实际构建函数,处理状态并管理你通常期望的很多东西.它只是另一种语言,但它的核心是命令行.

更新:

我要添加的另一件事是遵循最不惊讶原则,在这种情况下,这意味着您应该编写代码来管理系统所期望的代码.我经常看到Java程序员像Java程序员一样编写他们的部署,而不是系统管理员.如果您要将这些脚本交给系统管理员/操作角色,那么他们可能比他们必须编译的Java程序更熟悉shell脚本.

另一方面 - 将shell脚本视为正确的代码.把它放在源代码管理中(我的整个/等在Git管理下),有一个bug跟踪系统等.它使维护容易.