shell脚本的条件测试

出处:《跟老男孩学Linux:Shell编程实战》

目录

文件测试表达式

字符串测试操作符

整数二元比较操作符

逻辑操作符

不同符号测试表达式[ ]、[[ ]]、(( ))、test的区别


帮助命令

man test

文件测试表达式

常用的文件测试操作符

常用的文件测试操作符说明
-d 文件,d的全拼为directory文件存在且为目录则为真
-f 文件,f的全拼为file文件存在且为普通文件则为真
-e 文件,e的全拼为exist文件存在则为真
-r 文件,r的全拼为read文件存在且可读则为真
-s 文件,s的全拼为size

文件存在且文件大小不为0则为真

-S 文件,S的全拼为socket文件存在且为套接字则为真
-w 文件,w的全拼为write文件存在且可写则为真
-x 文件,x的全拼为executable文件存在且可执行则为真
-L 文件,L的全拼为link文件存在且为链接文件则为真
f1 -nt f2,nt的全拼为newer than文件f1比文件f2新则为真。根据文件的修改时间来计算
f1 -ot f2,ot的全拼为older than文件f1比文件f2旧则为真。根据文件的修改时间来计算

 

 

字符串测试操作符

字符串测试操作符说明
-n "字符串"若字符串长度不为0,则为真
-z "字符串"若字符串长度为0,则为真
"串1"  =  "串2"若字符串1等于字符串2,则为真。可使用 == 代替 =
"串1"  !=   "串2"若字符串1不等于字符串2,则为真。可使用 !== 代替 !=
  • 对于字符串的测试,一定要将字符串加双引号之后再进行比较。如[ -n "$myvar" ],特别是使用[]的场景。
  • 比较符号(例如 = 和 != )的两端一定要有空格。
  • "!="和"="可用于比较两个字符串是否相同

 

整数二元比较操作符

在[ ]以及test中使用的比较符在(( ))和[[ ]]中使用的比较符说明
-eq== 或 =相等,全拼为equal
-ne!=不等,全拼为not equal
-gt>大于,全拼为greater than
-ge>=大于等于,全拼为greater equal
-lt<小于,全拼为less than
-le<=小于等于,全拼为less equal
  • “=”和“!=”也可在[]中做比较使用,但在[]中使用包含“>”和“<”的符号时,需要用反斜线转义,有时不转义虽然语法不会报错,但是结果可能会不对。
  • 也可以在[[]]中使用包含“-gt”和“-lt”的符号,但是不建议这样使用。
  • 比较符号连段也要有空格。

 

逻辑操作符

在[ ] 和test中使用的操作符在(( ))和[[ ]]中使用的操作符说明
-a&&and,与
-o||or,或
!!not,非
  • 逻辑操作符前后的表达式是否成立,一般用真假来表示。
  • “!”的中文意思是反,即与一个逻辑值相反的逻辑值。
  • -a的中文意思是“与”,前后两个逻辑值都为“真”,综合返回值才为“真”,反之为“假”。
  • -o的中文意思是“或”,前后连个逻辑值只要有一个为“真”,返回值就为“真”。
  • 连接两含[ ]、test或[[ ]]的表达式可用 && 或 ||

 

不同符号测试表达式[ ]、[[ ]]、(( ))、test的区别

测试表达式符号[ ]test[[ ]](( ))
边界是否需要空格需要需要需要

不需要

有空格不报错

逻辑操作符-a、-o、!-a、-o、!&&、||、!&&、||、!
整数比较操作符-eq、-gt、-ge、-lt、-le-eq、-gt、-ge、-lt、-le

-eq、-gt、-ge、-lt、-le

=、>、>=、<、<=

=、>、>=、<、<=
字符串比较操作符=、==、!==、==、!==、==、!==、==、!=
是否支持通配符匹配  支持 

 

- 出处:《跟老男孩学Linux:Shell编程实战》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值