Shell 编程学习笔记:条件测试

原文见 《LINUX与UNIX SHELL编程指南 》的第17章 “条件测试” 。

两种条件测试:
• 对文件、字符串和数字使用 test 命令。
• 对数字和字符串使用 expr 命令。
expr 命令测试和执行数值输出。使用最后退出状态命令 $? 可测知 test 和 expr 的执行结果,二者均以0表示正确,1表示返回错误。

一、test 基本用法
1、测试时使用逻辑操作符

-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
!  逻辑否,条件为假,结果为真。

2、test 两种格式

一般有两种格式,即:
test condition

[ condition ]
使用方括号时,要注意在条件两边加上空格。

二、test 的各种测试
1、测试文件状态

- d 目录
- s 文件长度大于0、非空
- f 正规文件
- w 可写
- L 符号连接
- u 文件有s u i d位设置
- r 可读
- x 可执行

2、字符串测试
字符串测试有5种格式。
test "string"
test string_operator "string"
test "string" string_operator "string"
[ string_operator "string" ]
[ "string" string_operator "string" ]
这里, string_operator 可为:
=  两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。

3、测试数值
一般格式如下:
"number" numeric_operator "number"
或者
[ "number" numeric_operator "number" ]
numeric_operator 可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。


三、expr 用法
expr 命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr 也是一个手工命令行计数器。

1、计算
$ expr 10 + 10
20
$ expr 30 / 2
15
$ expr 30 /* 3
90

2、增量计数
$ LOOP=0
$ LOOP=`expr $LOOP + 1`

3、数值测试
可以用 expr 测试一个数。如果试图计算非整数,将返回错误。
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入 dev/null ,
然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。

数值:
$ VALUE=12
$ expr $VALUE + 10 > /dev/null 2>&1
$ echo $?
0

非数值:
$ VALUE=hello
$ expr $VALUE + 10 > /dev/null 2>&1
$ echo $?
2

expr 也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成
功返回1,任何其他值为无效或错误。
 

你可能感兴趣的:(shell,编程,string,测试,unix,linux)