Shell脚本与编程语言

Shell脚本与编程语言,shell,scripting,Shell,Scripting,对于我必须完成的许多任务,我发现自己必须在使用Linux中的Shell脚本或Java或Groovy等编程语言编写程序之间做出选择。有没有人对我应该如何选择一个而不是另一个以及为什么这样做有经验?Shell脚本非常适合于简洁的文件系统操作和通过管道编写过滤器和命令行工具中现有功能的组合脚本 当您的需求更大时,无论是在功能、健壮性、性能、效率等方面,您都可以使用功能更全面的语言。它们往往提供以下几种组合: 类型安全 更先进的集装箱 更好地控制可变的生存时间和内存使用 穿线 高级IPC,如共享内存和

对于我必须完成的许多任务,我发现自己必须在使用Linux中的Shell脚本或Java或Groovy等编程语言编写程序之间做出选择。有没有人对我应该如何选择一个而不是另一个以及为什么这样做有经验?

Shell脚本非常适合于简洁的文件系统操作和通过管道编写过滤器和命令行工具中现有功能的组合脚本

当您的需求更大时,无论是在功能、健壮性、性能、效率等方面,您都可以使用功能更全面的语言。它们往往提供以下几种组合:

  • 类型安全
  • 更先进的集装箱
  • 更好地控制可变的生存时间和内存使用
  • 穿线
  • 高级IPC,如共享内存和TCP/IP
  • 完整的二进制I/O功能、内存映射文件访问等
  • 访问操作系统API和无数功能强大的库
  • 随着项目规模的增加,可读性和可维护性更好
  • 支持更高级的编程范例:面向对象、函数式编程、生成式编程等
  • 在程序开始运行之前进行更好的错误检查,从而减少对测试用例覆盖率的依赖

Shell脚本是在系统上添加“胶水”的最直观的方法。然而,它并没有像Python这样的语言(也非常用于“粘合”系统)所具有的一些有用的概念,如继承和模块化

诚然,语言的使用基本上取决于你要做的任务。在我工作过的大多数情况下,shell脚本工作得很好,尽管我使用了大量Python来完成与系统相关的任务。在这种情况下,我不认为Java是一种替代方案。Groovy可能是,但不是Java(我指的是作为语言的Java,而不是作为平台的Java)


从系统管理员的角度来看,我认为Python和Ruby是很棒的语言。这不仅是因为动态键入和不需要编译,还因为诸如、、等工具以及许多其他工具使系统管理员的生活变得更加轻松:-)

@Tony提供了一个极好的利弊列表。我想添加一个更通用的点-shell脚本,因为它们非常方便,可能会显示出“没有什么比临时解决方案更持久”的特性,以及其他人需要使用它时伴随而来的所有维护问题。

编程优于脚本IMHO的主要优点是执行速度。如果我有一个小任务要完成,我倾向于使用脚本,而不是用Bash脚本来编写web服务器……我的经验是,在shell脚本中,算法(除了I+1)和数据结构的工作非常痛苦。所以无论何时你必须使用这些,我都会选择一种“真正的”语言。编写shell脚本就是编程。sh是一种编程语言。