shell_study.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:97 大小:2MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

shell_study.doc

shell_study.doc

预览

免费试读已结束,剩余 87 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

0.正则表达式:HYPERLINK"http://blogold.chinaunix.net/u2/68904/showart_691338.html"http://blogold.chinaunix.net/u2/68904/showart_691338.html正则表达式的格式在Unix中,正则表达式是被包含在一对斜线中的,斜线之间包含要匹配的字符(模式)。下面是几个例子:/piano//[Pp]iano//*pinfo//s\{2,5\}oho/1.test每一种条件语句的基础都是判断什么是真什么是假。是否了解其工作原理将决定您编写的是质量一般的脚本还是您将引以为荣的脚本。Shell脚本的能力时常被低估,但实际上其能力的发挥受制于脚本撰写者的能力。您了解得越多,您就越能像变戏法似地撰写一个文件来使任务自动化和简化您的管理工作。在shell脚本中进行的每一种操作(除最简单的命令编组之外)都需要检查条件。所有的shell脚本“逻辑”—广义意义下的“逻辑”—通常都可以分为以下三大类:if{conditionexists}then...while{conditionexists}do...until{conditionexists}do...无论随后的操作是什么,这些基于逻辑的命令都依靠判断一种条件是否真实存在来决定后续的操作。test命令是使得在每一种情况下都能够确定要判断的条件是否存在的实用工具。因此,彻底了解这个命令对于撰写成功的shell脚本至关重要。工作原理test命令最短的定义可能是评估一个表达式;如果条件为真,则返回一个0值。如果表达式不为真,则返回一个大于0的值—也可以将其称为假值。检查最后所执行命令的状态的最简便方法是使用$?值。出于演示的目的,本文中的例子全部使用了这个参数。test命令期望在命令行中找到一个参数,当shell没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则test将报告该错误。当试图保护脚本时,您可以通过将所有参数包含在双引号中来解决这个问题。然后shell将变量展开,如果变量没有值,那么将传递一个空值给test。另一种方法是在脚本内增加一个额外检查过程来判断是否设置了命令行参数。如果没有设置命令行参数,那么脚本会告诉用户缺少参数,然后退出。我们会通过一些例子来更具体地说明所有这些内容。test和[命令虽然Linux和UNIX的每个版本中都包含test命令,但该命令有一个更常用的别名—左方括号:[。test及其别名通常都可以在/usr/bin或/bin(取决于操作系统版本和供应商)中找到。当您使用左方括号而非test时,其后必须始终跟着一个空格、要评估的条件、一个空格和右方括号。右方括号不是任何东西的别名,而是表示所需评估参数的结束。条件两边的空格是必需的,这表示要调用test,以区别于同样经常使用方括号的字符/模式匹配操作。test和[的语法如下:testexpression[expression]在这两种情况下,test都评估一个表达式,然后返回真或假。如果它和if、while或until命令结合使用,则您可以对程序流进行广泛的控制。不过,您无需将test命令与任何其它结构一起使用;您可以从命令行直接运行它来检查几乎任何东西的状态。因为它们彼此互为别名,所以使用test或[均需要一个表达式。表达式一般是文本、数字或文件和目录属性的比较,并且可以包含变量、常量和运算符。运算符可以是字符串运算符、整数运算符、文件运算符或布尔运算符—我们将在以下各部分依次介绍每一种运算符。test文件运算符利用这些运算符,您可以在程序中根据对文件类型的评估结果执行不同的操作:-bfile如果文件为一个块特殊文件,则为真-cfile如果文件为一个字符特殊文件,则为真-dfile如果文件为一个目录,则为真-efile如果文件存在,则为真-ffile如果文件为一个普通文件,则为真-gfile如果设置了文件的SGID位,则为真-Gfile如果文件存在且归该组所有,则为真-kfile如果设置了文件的粘着位,则为真-Ofile如果文件存在并且归该用户所有,则为真-pfile如果文件为一个命名管道,则为真-rfile如果文件可读,则为真-sfile如果文件的长度不为零,则为真-Sfile如果文件为一个套接字特殊文件,则为真-tfd如果fd是一个与终端相连的打开的文件描述符(fd默认为1),则为真-ufile如果设置了文件的SUID位,则为真-wfile如果文件可写,则为真-xfile如果文件可执行,则为真以下示例显示了此简单操作的运行情况:$ls-ltotal33drwxr-xr-w2rootroot1024Dec505:05LST-rw-rw-rw-1emmet