小苏的Shell编程笔记之一
引言:个人感觉,Shell脚本对于Linux系统管理员太重要了,一条Shell语句可以达到几百条C语言代码的效果,尤其是当我们面对大型的集群的时候,Shell脚本更是把我们的工作效率提高了上千倍,听说Google的运维工程师就是通过Shell脚本来管理上千台的Linux主机,另外,Linux中很多可执行文件都是Shell写的,所以,我们一定要学好Shell脚本。1.Shell的功能和定义
Shell是一个功能强大的计算环境,既可以将其作为命令解释器,也可以将其作为编程语言,(个人感觉:类似于windows下的批处理文件,但要比它更强大)Shell的功能主要包括以下几个方面
l接受来自键盘的命令
l检查命令的正确性
l命令错误则给出报错信息
l命令正确则使用相应的系统调用执行命令(产生进程)
l命令执行完毕,给出命令执行的结果
2.Shell脚本介绍
用户可以将Linux的命令以编程的方式组合起来提交给Shell,Shell负责解释执行这种程序设计语言所写的代码。Linux把这种程序设计语言构成的文件称为 Shell Script 或Shell脚本。
Shell脚本是包含一个或者多个Shell命令的集合,这些命令会按照编写的顺序而被依次执行。Shell提供另一种利用简单命令组合实现复杂功能的机制。Shell脚本中支持绝大多数编程语言中所能见到的程序控制结构,可以使用注释(“#”)对脚本的功能进行说明,可以使用条件测试表达式进行分支判断,可以使用循环语句处理大量数据,可以定义变量、数组等,Shell脚本也提供对函数的支持。
3.Shell的通配符
* 匹配任意长度的任意字符
? 匹配任意一个字符
[] 匹配任意属于字符组的字符
例子:ls 20.
输出 : 20.220.320.4
也可以使用“-”符号来设定范围,比如表述数字0~9之间的任意数字,表示任意一个小写字母,表示任意一个大写字母。表示1,2,3,8,9之中的任意一个数字。当然,也可用“,”隔开,比如
同时,可以用“!”表示取反,比如表示所有的元音字母中的任意一个,而[!aoeiu]表示所有的辅音字母中的任意一个字母。
{} 将大括号中的字符串以及前导字符串和后缀字符串作为匹配条件
例子:echo m{oon ,op,ud }s
输出: moons mops muds
其基本格式为:前导字符串{字符串1,字符串2,……..}后缀字符串
4.Shell的条件执行
|| 逻辑或(两个管道符号)
用于连接两个命令,当前一个命令执行不成功才执行后一个
&&逻辑与
也用于连接两个命令,当前一个命令执行成功才执行后一个
5.Shell基础知识
lShell脚本是大小写敏感的
lShell脚本中使用“#”做为注释
l错误重定向为 2>
l错误和标准输出的重定向为 &>
l要善于使用管道命令,因为管道命令可以连接两个不同的命令
l如果遇到比较耗费时间的Shell进程,可以在后面加上 “&”符号,使其在后台运行
l如果想在同一行输入多条指令,就用“;”隔开
6.单引号,双引号及反引号
l双引号会对字符串中出现的“$”, “””,“\”和“`”进行替换。
l单引号不会对任何符号进行替换
l反引号会把字符串当命令执行(所谓的反引号就是ESC键下面的,数字1左边的那个键)
7.指定使用的Shell
Shell脚本文件的第一行必须遵循标准,来指定相应的Shell来运行脚本。
示例格式为:
#!/bin/bash
8.运行脚本的两种方法
l给脚本加上执行权限,然后用 ./bash.sh (参数)
l直接使用sh bash.sh (参数)
页:
[1]