1、条件测试常用语法

test 测试表达式 利用test命令进行条件测试表达式,test命令与测试表达式之间至少有一个空格
[ 测试表达式 ] 通过[ ]中括号进行条件测试表达式,[]中括号边界与测试表达式之间至少有一个空格
[[ 测试表达式 ]] 通过[[ ]]双中括号进行条件测试表达式,[[ ]]双中括号与测试表达式之间至少有一个空格
((测试表达式)) 通过(( ))双小括号进行条件测试表达式,( ))双小括号两端不需要空格,常用于整数对比

说明:

  • 双中括号[[ ]]中可以使用通配符进行匹配,这是其区别于其它几种语法的地方
  • &&,||,<,>等操作符可用于双中括号[[ ]]中,但不能应用于[ ]中,在[ ]中一般用-a,-o,-lt,-gt来代替

举例:

 test -f /tmp/test.txt && echo  || echo
[ -f /tmp/test.txt ] && echo || echo
[[ -f /tmp/test.txt ]] && echo || echo
((>)) && echo || echo 0

2、测试表达式用法

2.1、文件测试表达式

-d 文件 文件存在且为目录则为真
-f 文件 文件存在且为普通文件则为真
-e 文件 文件存在则为真,不辩别是目录还是文件
-s 文件 文件存在且文件大小不为0则为真
-r 文件 文件存在且可读则为真,与执行脚本的用户权限也有关
-w 文件 文件存在且可写则为真,与执行脚本的用户权限也有关
-x 文件 文件存在且可执行则为真,与执行脚本的用户权限也有关
-L  文件 文件存在且为链接文件则为真
f1 -nt f2 文件f1比文件f2新则为真,根据文件的修改时间计算
f1 -ot f2  文件f1比文件f2旧则为真,根据文件的修改时间计算

2.2、字符串测试表达式

-n "字符串" 若字符串的长度不为0(非空),则为真
-z "字符串" 若字符串的长度为0,则为真
"串1" = "串2" 若字符串1等于字符串2则为真,可用"=="代替"="
"串1" != "串2" 若字符串1不等于字符串2则为真,可用"!=="代替"!="

注意:

  • 对于字符串的比较,一定要将字符串加比引号后再比较。如[ -n "$string" ]
  • =与!=可用于判断两个字符串是否相同

2.3、整数操作符

在[]和test中使用 在[[ ]]和(( ))中使用 说明
-eq ==或= 等于,全拼为equal
-nq != 不等于,全拼为not equal
-gt > 大于,全拼为greater than
-ge >= 大于等于,全拼为greater equal
-lt < 小于,全拼为less than
-le <= 小于等于,全拼为less equal

2.4、逻辑操作符

在[]和test中使用 在[[ ]]和(( ))中使用 说明
-a && and,与,两端都为真,则结果为真
-o || or,或,两端有一个为真,则结果为真
! ! not,非,两端相反,则结果为真

2.5、测试表达式的区别总结

测试表达式符号 test [ ] [[ ]] (( ))
边界是否需要空格 需要 需要 需要 不需要
逻辑操作符 !、-a、 -o !、-a、 -o !、&&、|| !、&&、||
整数比较操作符 -eq、-ne、-lt、-gt、-ge、-le -eq、-ne、-lt、-gt、-ge、-le

-eq、-ne、-lt、-gt、-ge、-le或

=、!=、<、>、>=、<=

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

最新文章

  1. Log4j的ConversionPattern参数的格式含义
  2. java单例类/
  3. 什么是Ajax
  4. HDU 4463 Outlets (最小生成树)
  5. 安卓 canvas
  6. pixi.js
  7. mysql生成百万级数量测试数据
  8. Linux系统下常用的快捷键
  9. 学JAVA第十三天,方法、方法重载及构造函数
  10. Callable,Future和FutureTask详解
  11. Runtime常用的几个场景
  12. ElasticSearch是如何实现分布式的?
  13. JSP基础知识➣Cookie和Session(五)
  14. Nessus中文报告自动化脚本
  15. Python2.7-array
  16. BZOJ 百题纪念!
  17. LaTeX:Question &amp; Answer
  18. Google C++ Coding Style 学习笔记
  19. hello word!------为什么开通博客以及自我介绍
  20. 迅搜sdk试用

热门文章

  1. 关于BSP,BIOS,和bootloader
  2. PHP csv导出数据 (二)
  3. nginx配置-Rewrite
  4. 【CDN+】Kafka 的初步认识与入门
  5. EF框架之——Code First以及踩过的这些“坑”
  6. Jenkins持续集成_01_Mac安装配置
  7. Bootstrap 学习笔记11 按钮和折叠插件
  8. 20190825 On Java8 第十三章 函数式编程
  9. 20190821 On Java8 第十一章 内部类
  10. Ajax爬取百度图片