1. 为什么要使用Shell脚本
使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象
缺点:
效率通常不如编译型语言。
优点:
简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。
可移植性: 使用POSIX所定义的功能,可以做到脚本无需修改就可在不同的系统上执行
开发容易:可以在短时间内完成一个功能强大又好用的脚本。
2. Shell脚本的典型开发周期:
1、直接在命令行(command line)上测试
2、一旦找到能够完成工作的适当语法,再将它们放进一个独立的脚本里
3、为该脚本设置执行的权限
3. 命令
$ cd work;ls -l whizprog,c
- 以空白(Space键或Tab键)隔开命令行中各个组成部分
- 命令名称是命令行的第一个项目,比如ls
- 命令名称后面会跟着选项(option),选项的开头是一个破折号(或者减号),后面接着一个字母。选项是可有可无的。
- 以两个破折号(–)来表示选项结尾的用法
- 分号(;)可以用来分隔同一行里的多条命令,Shell会依次执行这些命令。
- 如果使用的是&符号而不是分号,则Shell将在后台执行其前面的命令,这意味着,Shell不用等到该命令完成,就可以继续执行下一个命令。
4. Tab 键
Tab
键具有文件名补全功能,单击补全,双击列出文件列表。
5. 通配符
*
匹配任意长度字符串
?
匹配一个字符串
[ ]
匹配出现在方括号内的字符,例如 [aA] a 或 A , [1-3] 1、2或3
6. 注释
以#
开头的行就是注释,会被解释器忽略。
sh里没有多行注释,只能每一行加一个#号。
如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?
每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
7. 一个简单的shell脚本
(1)who命令可以告诉你现在系统有谁登陆:
$who
root pts/2 2012-05-05 09:38 (192.168.0.83)
root pts/3 2012-05-05 09:38 (192.168.0.83)
(2)利用wc(字数计算)程序,它可以算出行数(line),字数(word),字符数(character)。在此例中,我们用的是wc -l ,已登录用户的个数。
(3)|(管道)符号可以在两个程序之间建立管道(pipeline):who的输出,成了wc的输入。
$ who|wc -l
2 //计算用户个数
(4)把这条命令输入一个文件中,然后使用chmod为该文件设置执行权限。
$ cat > nusers #建立文件,使用cat复制终端的输入
who | wc -l #程序的内容
^D #此处按Ctrl+D 表示 end-of-file
$ chmod +x nusers #让文件拥有执行的权限
$ ./nusers #执行测试
2 #输出我们要的结果