java - 由 shell 命令组成的程序应该用 java 编写吗?

标签 java linux shell scripting

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

问题是这个脚本很难维护,也很难进行单元测试。 此外,我希望将来对其进行更改,以便它可以与 xml 配置文件一起使用,而且我认为使用 shell 脚本无法轻松完成。 因此,我想将其转换为 Java 应用程序,但仅使用 ProcessBuilder 运行许多命令感觉不对。

另一方面,为现在可以在 shell 命令中轻松解决的每个“问题”搜索 java 解决方案(例如 java ssh 客户端、用于 linux 进程的 java API 等),也感觉不对。

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

有什么建议吗?

最佳答案

我使用过多种语言编写 shell 脚本;从 Python、PHP 到 Java - 我一直在回过头来使用正确的工具来完成工作

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

过去让我们的一些开发人员感到惊讶的是,您实际上可以在 bash 脚本中构建函数,传递状态并管理您通常期望的许多内容。它只是另一种语言,但其核心是命令行。

更新:

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

另一方面 - 将您的 shell 脚本视为正确的代码。将它放在源代码管理中(我的整个/etc 都在 Git 管理下),有一个错误跟踪系统等。它使维护很多更容易。

关于java - 由 shell 命令组成的程序应该用 java 编写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777745/

相关文章:

bash - Bash 中制表符分隔表的列编辑和重命名

c - 当我尝试追加时,字符串数组被完全重写 - C (xv6)

java - 如何修复 IllegalArgumentException

linux - 加入 CentOS 7 到事件目录

java - 各种小HashSet和1个大HashSet的搜索差异是什么?

linux - 查找重复文件

c++ - 编写 C++ SOAP(多线程)客户端应用程序 - 不使用 gSOAP

java - 如何过度设计 shell

java - 使用 Java 清除控制台

java - 如何创建一个数组字符串来打印android中的元素列表