什么时候不适合使用Shell脚本

学习高级Bash脚本编程指南

                                                             没有程序语言是完美的. 甚至没有一个唯一最好的语言, 只有对于特定目的, 比较适合和不适合的程序语言.

                                                                                                                                                                               Herbert Mayer

一个shell脚本是一个类似于"小吃店的(quick and dirty)"方法, 在你使用原型设计一个复杂的应用的时候. 在工程开发的第一阶段, 即使从功能中取得很有限的一个子集放到shell脚本中来完成往往都是非常有用的. 使用这种方法, 程序的结果可以被测试和尝试运行, 并且在处理使用诸如C/C++, Java或者Perl语言编写的最终代码前, 主要的缺陷和陷阱往往就被发现了.

Shell脚本遵循典型的UNIX哲学, 就是把大的复杂的工程分成小规模的子任务, 并且把这些部件和工具组合起来. 许多人认为这种办法更好一些, 至少这种办法比使用那种高\大\全的语言更美, 更愉悦, 更适合解决问题. 比如Perl就是这种能干任何事能适合任何人的语言, 但是代价就是你需要强迫自己使用这种语言来思考解决问题的办法.

什么时候不适合使用Shell脚本

  • 资源密集型的任务, 尤其在需要考虑效率时(比如, 排序, hash等等).

  • 需要处理大任务的数学操作, 尤其是浮点运算, 精确运算, 或者复杂的算术运算(这种情况一般使用C++或FORTRAN来处理).

  • 有跨平台移植需求(一般使用C或Java).

  • 复杂的应用, 在必须使用结构化编程的时候(需要变量的类型检查, 函数原型, 等等).

  • 至关重要的应用, 比如说为了这个应用, 你需要赌上自己的农场, 甚至赌上你们公司的未来.

  • 对于安全有很高要求的任务, 比如你需要一个健壮的系统来防止入侵, 破解, 恶意破坏等等.

  • 工程的每个组成部分之间, 需要连锁的依赖性.

  • 需要大规模的文件操作(Bash受限于顺序地进行文件访问, 而且只能使用这种笨拙的效率低下的一行接一行的处理方式. ).

  • 需要多维数组的支持.

  • 需要数据结构的支持,比如链表或数组等数据结构.

  • 需要产生或操作图形化界面GUI.

  • 需要直接操作系统硬件.

  • 需要I/O或socket接口.

  • 需要使用库或者遗留下来的旧代码的接口.

  • 个人的, 闭源的应用(shell脚本把代码就放在文本文件中, 全世界都能看到).

如果你的应用符合上边的任意一条, 那么就考虑一下更强大的语言吧--或许是Perl, Tcl, Python, Ruby -- 或者是更高层次的编译语言比如C/C++, 或者是Java. 即使如此, 你会发现, 使用shell来原型开发你的应用, 在开发步骤中也是非常有用的.

posted @ 2011-09-05 22:59  夏大王  阅读(321)  评论(0编辑  收藏  举报