第三章Shell编程本章概要什么是Shell脚本正则表达式与grep命令用BashShell编程什么是Shell脚本?一个shell脚本程序(shellscript)是包含Linux命令的文本文件。我们可以使用任何标准编辑器输入Linux命令。例如vi、emacs、WordPerfect,以及任何GNOME或KDE的文本编辑器。3.1Shell编程概述3.1Shell编程概述一个Shell脚本就是一组Shell的命令和语句,把它们放在一个文件里。可以交互式地运行这些脚本,也可以计划在未来的某个时间里自动地或无人监管地运行某个脚本。举一个例子。DOS在文本文件每一行的结尾都有一个换行符和一个回车作为标记;Linux(其他UNIX系统也是一样)在每一行的最后只使用一个换行符。如果我们使用带有-b选项的vi编辑器打开一个DOS文件,将看到在每一行在最后都有一个^M符号。这个^M代表ctrl+M,它表示的是回车符。在Linux系统上,通过使用带-d选项的tr命令可以很容易地将DOS文本文件中的那些额外的回车符去掉。为什么要建立Shell程序呢tr命令——字符翻译tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。大小写转换。去除控制字符。删除空行。tr命令格式tr[option]…string1[string2]字符串string1中的输入字符映射到string2中的对应字符。各选项的含义如下:-c用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。-d删除字符串1中所有输入字符。-s删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。注意:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。举例说明tr的用法:tr“[a-z]”“[A-Z]”filename.linux注:‘\015’是用八进制数表示的回车符的ASCII码。同许多UNIX程序一样,tr的读写操作都是针对标准输入和标准输出的设备,所以我们在此必须使用I/O的重定向,才能利用tr删除一个文件中所有指定字符,并将输出存入另一个文件中。我们可以把下面这行存储到一个名为dos2linux的文件中:tr–d“[\015]”<$1>$2(注:Bash有一些专门存储命令行参数的变量。在一个Shell脚本中,$0表示该Shell脚本的名字;变量$1、$2等表示命令行参数。)类比:在C程序中main函数参数表中的参数main(intargc,char*argv[])然后,通过使用下面的命令将其做成可执行文件:$chmod+xdos2linux假如我们有一个挂装为/dosc的MS-DOS分区,可以试用一下dos2linux这个Shell程序:$dos2linux/dosc/autoexec.bataexec.bat编写脚本和编写程序有什么不同脚本和程序之间的区别是,脚本是一个文本文件。在该文件里写命令并执行文件无需中间步骤。反之,程序要运行必须对程序的源代码进行编译。由编译器生成计算机能够读懂的可执行机器代码。Shell支持大多数编程语言结构,比如:变量和数组参数传递逻辑和流程结构(if…then…else块、与、或、非)case语句循环结构(until、while、for)函数(内部及用户定义的)注释脚本的文档系统编程语言“从头开始”设计数据结构和算法,从最基本的内存单元开始设计;脚本语言则是在现有的多功能库基础上实现新功能。系统编程语言是强类型语言,有助于处理复杂的问题;而脚本语言则一般不使用类型,用于简化元件之间的关系,可以快速开发。系统编程语言和脚本语言系统编程语言的历史系统编程语言先是作为汇编语言的替代品。汇编语言反映机器的每一个层面,每一条语句代表单一的机器指令。程序设计者要做很低级的事情,诸如调用寄存器、处理杂事等。因此,用汇编语言编写及维护大型程序,是相当困难的。50年代晚期,高级语言如Lisp、FORTRAN和Algol出现了。程序...