Linux条件测试

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

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

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

 (1). 执行命令,并利用命令状态返回值来判断

   0:成功

   1-255:失败

 (2). 测试表达式

   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:字符串是否小于

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

三、文件测试

(一)文件存在性测试

单目测试

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

(二)文件类型测试

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

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

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

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

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

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

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

(三)文件内容测试

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

(四)文件打开测试

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

(五)文件时间戳测试

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

(六)文件从属关系测试

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

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

(七)双目测试

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

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

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

(八)文件权限测试

 普通权限测试

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

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

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

 特殊权限测试

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

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

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

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

  逻辑运算

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

  与运算

   真 && 真=真

   真 && 假=假

   假 && 真=假

   假 && 假=假

  或运算

   真 || 真=真

   真 || 假=真

   假 || 真=真

   假 || 假=假

  非运算

   ! 真=假

   ! 假=真
  逻辑与:&&

   COMMAND1 && COMMAND2

   EXPRESSION1 -a EXPRESSION2

  逻辑或:||

   COMMAND1 || COMMAND2

   EXPRESSION1 –o EXPRESSION2

  逻辑非:!

   ! COMMAND

   ! EXPRESSION

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

语句1 ; 语句2

bash自定义退出状态码

语法:exit [N]

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

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

  状态码范围:1~255之间

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

  遇到exit,bash进程会立即终止

转载于:https://blog.51cto.com/zhangdaifu/2301456

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值