文档介绍:第三章 Shell编程
本章概要
什么是Shell脚本
正则表达式与grep命令
用Bash Shell编程
什么是Shell脚本?
一个shell脚本程序(shell script)是包含Linux命令的文本文件。
我们可以使用任何标准编辑器输入Linux命令。例如vi、emacs、WordPerfect,以及任何GNOME或KDE的文本编辑器。
Shell编程概述
一个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]”< /etc/passwd
把/etc/passwd文件输出到屏幕上,并把所有的小写字母变成大写字母。
tr “[a-z]”“[b-za]”< ~/.bashrc
,但是字符是经过循环处理的。
。可以输入下面的命令:
$tr –d “[\015]”< >
注:‘\015’是用八进制数表示的回车符的ASCII码。
同许多UNIX程序一样,tr的读写操作都是针对标准输入和标准输出的设备,所以我们在此必须使用I/O的重定向,才能利用tr删除一个文件中所有指定字符,并将输出存入另一个文件中。
我们可以把下面这行存储到一个名为dos2linux的文件中:
tr –d “[\015]”< $1 > $2
 
(注:Bash有一些专门存储命令行参数的变量。在一个Shell脚本中,$0表示该Shell脚本的名字;变量$1 、$2等表示命令行参数。)
类比:在C程序中main函数参数表中的参数
main(int argc , char *argv[])
 
然后,通过使用下面的命令将其做成可执行文件:
$chmod +x dos2linux
假如我们有一个挂装为/dosc的MS-DOS分区,可以试用一下dos2linux这个Shell程序:
$dos2linux /dosc/