Linux条件测试


   大家好,我是“孤云幕雨”;今天给大家带来的是《Linux条件测试》

条件测试定义: 判断某需求是否满足,需要由“条件测试”机制来实现


如何编写测试表达式以实现所需的测试

v  执行命令,并利用命令状态返回值来判断

Ü  0:成功

Ü  1-255:失败

v  测试表达式

Ü  test 测试表达式

Ü  [ 测试表达式 ]

Ü  [[ 测试表达式 ]]

注意:中括号和测试表达式前后必须有空格,否则为语法错误

 

bash测试类型

一、数值比较测试

Ü  INTEGER 1 –gt INTEGER 2:判断整数1是否大于整数2;大于为真,否则为假

Ü  INTEGER 1 –ge INTEGER 2:判断整数1是否大于等于整数2

Ü  INTEGER 1 –lt INTEGER 2:判断整数1是否小于整数2;小于为真,否则为假

Ü  INTEGER 1 –le INTEGER 2:判断整数1是否小于等于整数2

Ü  INTEGER 1 –eq INTEGER 2:判断整数1是否等于整数2;等于为真,不等为假

Ü  INTEGER 1 –ne  INTEGER 2:判断整数1是否不等于整数2;不等为真,等于为假

二、字符串测试

Ü  -z "STRING":判断指定字符串是否为空;空则为真,不空则为假

Ü  -n "STRING":判断指定字符串是否不空;不空则为真,空则为假

Ü  STRING 1 == STRING 2:判断字符串1是否和字符串2相等;相等为真,否则为假

Ü  STRING 1 !== STRING 2:判断字符串1是否和字符串2不相等;不等为真,否则为假

Ü  STRING =~ PATTERN:左侧的字符串是否能被右侧的模式所匹配(包含匹配)能匹配到则为真

Ü  STRING 1 > STRING 2:字符串是否大于

Ü  STRING 1 < STRING 2:字符串是否小于

注意:用于字符串比较时的用到的操作数都应该使用引号,且要在双中括号[[  ]]中进行

三、文件测试

(一)文件存在性测试

v  单目测试

Ü  -e FILENAME:文件存在性测试,存在为真,否则为假

(二)文件类型测试

Ü  -f FILENAME:判断该文件是否存在并且为普通文件

Ü  -d FILENAME:判断该文件是否存在并且为目录文件

Ü  -L FILENAME -h FILENAME:判断该文件是否存在并且为软链接文件

Ü  -b FILENAME:判断该文件是否存在并且为块设备文件

Ü  -c FILENAME:判断该文件是否存在并且为字符设备文件

Ü  -p FILENAME:判断该文件是否存在并且为命名管道文件

Ü  -S FILENAME:判断该文件是否存在并且为套接字文件

(三)文件内容测试

Ü  -s FILENAME:判断该文件是否存在,是否为非空文件

(四)文件打开测试

Ü  -t FDfd表示文件描述符是否已经打开且与某终端相关

(五)文件时间戳测试

Ü  -N FILENAME:文件自从上一次被读取之后是否被修改过

(六)文件从属关系测试

Ü  -O FILENAME:当前有效用户是否为文件属主

Ü  -G FILENAME:当前有效用户是否为文件属组

(七)双目测试

Ü  FILE1 -nt FILE2:判断FILE1是否新于FILE2

Ü  FILE1 -ot FILE2:判断FILE1是否旧于FILE2

Ü  FILE1 -ef FILE2:判断FILE1FILE2是否指向同一个文件系统的相同inode的硬链接

(八)文件权限测试

    普通权限测试

    Ü  -r FILENAME:判断该文件是否存在,并且对当前用户可读

    Ü  -w FILENAME:判断该文件是否存在,并且对当前用户可写

    Ü  -x FILENAME:判断该文件是否存在,并且对当前用户可执行

    特殊权限测试

    Ü  -u FILENAME:判断该文件是否存在,并且拥有SUID权限

    Ü  -g FILENAME:判断该文件是否存在,并且拥有SGID权限

    Ü  -k FILENAME:判断该文件是否存在,并且拥有StickyBit权限

(九)多重(组合)条件测试

v  逻辑与:&&

Ü  COMMAND1 && COMMAND2

Ü  EXPRESSION1 -a EXPRESSION2

v  逻辑或:||

Ü  COMMAND1 || COMMAND2

Ü  EXPRESSION1 –o EXPRESSION2

v  逻辑非:!

Ü  ! COMMAND

Ü  ! EXPRESSION

逻辑运算

数字相同则为0,数字不同则为1

与运算

v  && =

v  && =

v  && =

v  && =

或运算

v  || =

v  || =

v  || =

v  || =

非运算

v  ! =

v  ! =

一行中可以执行多条语句,语句间用分号“;”分割;不管前面的语句是否正确执行,后面的语句都会执行

v  语句1 ; 语句2

 

bash自定义退出状态码

语法exit [N]

脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字

注意:shell进程遇到exit时,即会终止,因此,整个脚本执行即为结束

v  状态码范围:1255之间

v  如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码

v  遇到exitbash进程会立即终止

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章