条件测试 linux,Linux的条件测试

判断某需求是否满足,需要由测试机制来实现

专用的测试表达式需要由测试命令完成测试过程

1. 测试命令

1) test EXPRESSION

2) [ EXPRESSION ] 正常比较用单中括号

3) [[ EXPRESSION ]] 双中括号一般用于正则表达式

NOTE:中括号中EXPREESSION一定要有中括号

4) 测试的的返回值为布尔值:

若真,则返回0

若假,则返回1

2. 数值测试

-gt: 是否大于 -ge: 是否大于等于 -eq: 是否等于

-ne: 是否不等于 -lt: 是否小于 -le: 是否小于

3. 字符串测试

=:是否等于 >:ascii码是否大于ascii码

=~:左侧字符串是否能被右侧的PATTERN所匹配

NOTE:此表达式一般用于[[ ]]中

-z "STRING":字符串是否为空,空为真,不空为假

-n "STRING":字符串是否不空,不空为真,空为假

NOTE:用于字符串比较时用到的操作数都应该使用引号

4. 文件测试

1)存在性测试

-a FILE:同-e

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

2)存在性及类别测试

-b FILE:是否存在且为块设备文件

-c FILE:是否存在且为字符设备文件

-d FILE:是否存在且为目录文件

-f FILE:是否存在且为普通文件

-h FILE 或 -L:是否存在且为符号链接文件

-p FILE:是否存在且为命名管道文件

-S FILE:是否存在且为套接字文件

3)文件权限测试

-r FILE:是否存在且可读

-w FILE:是否存在且可写

-x FILE:是否存在且可执行

4)文件特殊权限测试

-u FILE:是否存在且拥有suid权限

-g FILE:是否存在且拥有sgid权限

-k FILE:是否存在且拥有sticky权限

5)文件大小测试

-s FILE:是否存在且非空

6)文件是否打开测试

-t fd: fd 文件描述符是否在某终端已经打开

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

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

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

7)双目测试

FILE1 -ef FILE2:FILE1是否是FILE2的硬链接

FILE1 -nt FILE2:FILE1是否新于FILE2(mtime)

FILE1 -ot FILE2:FILE1是否旧于FILE2

5. 组合测试条件

第一种方式:

EXPRESSION1 -a EXPRESSION2 并且

EXPRESSION1 -o EXPRESSION2 或者

! EXPRESSION

NOTE:必须使用测试命令支持,[[ ]]不支持

第二种方式:

COMMAND1 && COMMAND2 并且,短路与,代表条件性的AND THEN

COMMAND1 || COMMAND2 或者,短路或,代表条件性的OR ELSE

! COMMAND 非

eg. [ -f "$FILE" ] && [[ "$FILE" =~.*\.sh$ ]]

6. 自定义退出状态码

exit [n]:自定义退出状态码

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

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

7. 补充:常用特殊变量

在脚代码中调用通过命令行传递给脚本的参数

$1,$2...:对应第1,第2等参数

$0:命令本身

$*:传递给脚本的所有参数

$@:传递给脚本的所有参数

$#:传递给脚本的参数的个数

NOTE:$*和$@的区别

不加引号时,二者都是返回传入的参数;

加引号之后,$*把参数做为一个字符串整体(单字符串)返回;

$@把每个参数作为一个字符串返回。

8. 更多详细练习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值