高级Bash脚本编程 第一章

无责任翻译by:潘星臣
任何问题,请发送到:
admin@wewebos.com
admin@opentrees.org
Advanced Bash Scripting Guide
高级Bash脚本编程指南

                    第一章 为什么使用shell编程?

    “没有任何编程语言是完美的。这意味着没有哪个所谓最好的语言,只有适合或者不适合的语言。”
                                                Herbert Mayer
    掌握关于脚本的工作知识对于成为专业系统管理员非常重要,即使他们可能从来都没有写过一个脚本。考虑当linux系统启动的时候,它执行位于/etc/sc.d 目录下的shell脚本以恢复系统配置并启动服务。详细地了解这些启动脚本对于分析系统的行为非常重要,并且可能修改它们。

    学习shell脚本并不困难,只有少量的操作符和选项需要学习。shell脚本的语法简洁易懂,类似于在命令行依次输入命令,并且只有很少的规则需要学习。绝大多数简短脚本都能一次运行正确,而较长的脚本调试起来也是想当的容易。
   
    一个shell脚本可以是对于一个复杂程序的“快而且邋遢”的原型化。在项目开发的第一阶段,使用脚本来实现部分的功能是非常有用的。通过这种方法,可以测试程序的架构,以便在使用专业语言(如c、c++、java、perl)进行最终编码前找出潜在的问题。
   
    shell脚本遵循了UNIX的经典哲学:将复杂的工程拆分为一些较为简单的子任务,并用组件和工具集将它们串联起来。大部分人认为这种方式很好,至少比使用一些“全能而强大”的语言来解决问题显得更优美。因为那些语言总是想强加所有的概念给人们,强迫人们修改自己的想法以适应语言。

什么时候不使用shell脚本

•     资源密集型的任务,特别是要优先考虑速度的时候。(例如,排序、hash运算)
• 执行繁重的数学运算,特别是浮点运算、高精度随机数运算、复数运算。(使用C++或者fortran代替)
• 跨平台需求。(使用C或者Java代替)
• 复杂的应用程序,需要结构化的编程。(需要变量类型检查,函数原型等)
• 决定公司命运与前途的重要程序。
• 需要信息安全的领域,需要保护系统不受到入侵,cracking和破坏。
• 项目中包含有安全锁模块。
• 需要进行高级文件操作(bash shell脚本被限制只能串行地访问文件,即通过笨拙的,逐行处理的方法访问文件。
• 需要多维数组。
• 需要数据结构,例如链表或者树。
• 需要图形用户界面。
• 需要直接访问硬件。
• 需要端口I/O。
• 需要使用类库或者接口。
• 专有,闭源的程序。(shell 脚本的所有的代码都暴露着,任何使用者都可以查看)

如果满足以上任意一条,应该考虑使用更强大的脚本语言--例如Perl,Tcl,Python,Ruby,或者是高级编译语言如 C,C++Java。但即便如此,使用shell脚本进行应用程序的原型化仍然是一个很有用的开发步骤。

    我们将使用Bash("Bourne-Again Shell")来进行脚本编程。Bash是UNIX脚本编程事实上的标准。本书所涉及的大部分概念同样适用于其他shell,例如Korn Shell(由Bash派生而来),以及C Shell及其变体。(1993年10月 Tom Christiansen的报告指出,C Shell有先天问题,因而不建议使用)

    以下将是shell脚本编程的导游。通过例子给你产生对于shell各种特性的印象。样例代码经过测试,并且有些在实际应用中也很有用。读者可以直接尝试样例代码,赋予它们可执行权限(chmod u+rx 脚本名),然后运行看看发生了什么。如果你无法获得原代码文件,那么可以直接从书中复制黏贴出来。需要注意的是,有时根据需要会先贴出代码,随后才进行解释,读者请自行跳过前导代码部分。
   
   



    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值