|
第17章条件测试
写脚本时,有时要判断字符串是否相等,可能还要检查文件状态或是数字测试。基于这
些测试才能做进一步动作。Te s t命令用于测试字符串,文件状态和数字,也很适合于下一章将
提到的i f、t h e n、e l s e条件结构。
本章内容有:
• 对文件、字符串和数字使用t e s t命令。
• 对数字和字符串使用e x p r命令。
e x p r命令测试和执行数值输出。使用最后退出状态命令$ ?可测知t e s t和e x p r,二者均以0表
示正确,1表示返回错误。
17.1 测试文件状态
t e s t一般有两种格式,即:
test condition
或
[ c o n d i t i o n ]
使用方括号时,要注意在条件两边加上空格。
测试文件状态的条件表达式很多,但是最常用的可在表1 7 - 1中查到。
表17-1 文件状态测试
- d 目录- s 文件长度大于0、非空
- f 正规文件- w 可写
- L 符号连接- u 文件有s u i d位设置
- r 可读- x 可执行
使用两种方法测试文件s c o r e s . t x t是否可写并用最后退出状态测试是否成功。记住, 0表示
成功,其他为失败。
两种状态均返回0,可知文件s c o r e s . t x t可写,现在测试其是否可执行:
查看文件s c o r e s . t x t权限列表,可知结果正如所料。
下面的例子测试是否存在a p p s b i n目录
目录a p p s b i n果然存在。
测试文件权限是否设置了s u i d位
从结果知道s u i d位已设置。
17.2 测试时使用逻辑操作符
测试文件状态是否为O K,但是有时要比较两个文件状态。s h e l l提供三种逻辑操作完成此
功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
下面比较两个文件:
下面的例子测试两个文件是否均可读。
结果为真。
要测试其中一个是否可执行,使用逻辑或操作。
s c o r e s . t x t不可执行,但r e s u l t s . t x t可执行。
要测试文件r e s u l t s . t x t是否可写、可执行:
结果为真。 |
|