Shell脚本与编程语言

时间:2011-02-10 10:07:50

标签: shell scripting

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

3 个答案:

答案 0 :(得分:9)

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

当您的需求更大时 - 无论是功能性,稳健性,性能,效率等 - 那么您可以转向功能更全面的语言。他们倾向于提供以下组合:

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

答案 1 :(得分:2)

@Tony提供了优秀的优缺点列表。我会添加一个更通用的点 - shell脚本,因为它们非常方便,冒着显示“没有比临时解决方案更持久”的特性,并且当其他人需要使用它时,会出现所有伴随的维护问题。

答案 2 :(得分:1)

Shell脚本是在系统上使用“粘合剂”的最直观方式。但是,它没有一些有用的概念,比如继承和模块化,像Python这样的语言(它也非常习惯于“粘合”系统)。

没错,语言的使用主要取决于你要做的任务。对于我工作过的大多数情况,shell脚本运行良好,虽然我使用了大量的Python来完成系统相关的任务。在这种情况下,我不认为Java会成为替代品。可能Groovy会是,但不是Java(我的意思是Java作为一种语言,而不是Java作为平台。)

在系统管理员视图中,我认为Python和Ruby是很棒的语言。不仅因为动态类型而且不需要编译,而是因为FabricCapistranoPuppet等工具以及许多使得系统管理员生活更轻松的工具: - )