免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3363 | 回复: 0
打印 上一主题 下一主题

为什么要用shell编程? [复制链接]

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-28 13:10 |只看该作者 |倒序浏览
Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting
Chapter 1. Why Shell Programming?

为什么要用shell编程?
                                            没有一种编程语言是完美的。也不存在一种最好的语言;
                                            只存在某种语言,它更适合或不适合某种特
                                            定的应用。                                  
                                                                           ----Herbert Mayer

对于任何想精通系统管理的人来说,了解shell脚本的工作机制是必要的,即使他们从来没
打算要去写一个脚本。在linux系统启动的时候,会运行目录/etc/rc.d下的脚本来恢复系统的
配置并对各种系统服务进行设置。理解这些启动脚本的细节,对分析和修改系统的动作是很
有帮助的。

写shell脚本并不难学,因为脚本可以订制的很小,且需要学习的操作和选项也不多。
shell的语法很简洁,很像是命令行的堆叠,而且要学习的规则也很少。大部分短的脚本第一
次就可以正常运行,即使是长的脚本调试起来也很方便。

对于一个复杂应用的原型来说shell脚本是一个快速而肮脏的实现。在工程的初期先写一个功
能有限的子集/模块是有用的,在用C, C++, Java, 或Perl编程的时候,这样的方法使工程的
开发可以一边测试一边进行,并在最后编码前发现其中的主要缺陷。

shell脚本很好的继承了UNIX的哲学(把复杂的工程拆分成简单子集),使用组件和工具的组
合来完成任务。很多人认为这样更好或者说是更合理的解决问题的方法,而不是使用一种功
能强大涵盖一切的语言,比如Perl,它试图要替所有人解决所有问题,这需要你花费精力转
变思想去适应这种工具。

什么情况下不用shell脚本:
        >对资源要求敏感的任务,特别是速度是主要的考虑因素时候(比如说排序、散列等)。
        >需要进行繁重的数学运算,特别是浮点运算、非常精确或复杂的数字(用C++或FORTRAN代替)。
        >需要交叉平台的可移植性(用C或java代替)。
        >复杂的应用,需要严格的模块化编程(需要类型检查、函数原型声明等)。
        >对安全性要求很高的地方,你需要保证系统的完整性,防止入侵、攻击和故意破坏。
        >工程的子模块之间有较强的依赖性的时候。
        >需要对很多文件进行操作的时候(Bash只能一个一个的去访问文件,而且它只会很笨拙的逐行去执行)。
        >需要内在支持多维数组的时候。
        >需要某些数据结构,比如链表和树。
        >需要处理图像或GUIs的时候。
        >需要直接访问系统硬件的时候。
        >需要端口或socket I/O操作的时候。
        >需要使用已有的特定库或接口的时候。
        >私有的封闭的开发模式(shell脚本的代码对全世界都是开放的)。
       
如果上面的任何一种应用使用了一个更强大的脚本语言----Perl, Tcl, Python, Ruby或者一种高
级编译语言,比如C, C++, or Java,即使是这样,用shell构建这个应用的原型/框架也是很
有用处的。

我们将使用Bash(Bourne-Again shell的缩写,是现在经典得Stephen Bourne的Bourne shell
的双关语)。在所有流行的UNIX上Bash已经变成一个事实上shell编程的标准。这本书里的
大部分用法在其他shell上也适用,比如ksh(Bash从它那儿借鉴一些特性)、Csh和它的变种。
(注意:因为自身的某些原因我们不建议使用Csh编程,这一点是1993年10月Tom
Christiansen在Usenet post上指出的)。

接下来就是我们的shell脚本之旅,并重点用例子和图表的方法向大家展示shell的各种特性。
那些脚本实例都是经过的测试的,而且有一些在我们的日常生活当中很有用处。读者可以实
际运行压缩包里那些原码文件(形如scriptname.sh / scriptname.bash的文件),先给它们加上
可执行权限(chmod u+rx scriptname),再运行看有什么事情发生。可能没有直接提供原码文
件,那么请从HTML, pdf, or text文档中拷贝下来。需要明白一点这儿提供的一些脚本是先介
绍特性再进行解释,这可能需要读者在阅读时先跳过一些东西。

[ 本帖最后由 yjh777 于 2006-5-15 09:57 编辑 ]

why shell programming.rar

6.11 KB, 下载次数: 1407

Why Shell Programming

评分

参与人数 1可用积分 +1 收起 理由
waker + 1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP