1. 字符串测试操作符
  字符串测试操作符的作用:比较两个字符串是否相同、字符串长度是否为零,字符串是否为null(注:bash区分零长度字符串和空字符串)等。
  “=”比较两个字符串是否相同,与==等价,如if[ "$a" = "$b" ],其中$a这样的变量最好用""括起来,因为如果中间有空格,*等符号就可能出错了,当然更好的方法就是[ "${a}" = "${b}" ]。"!=" 比较两个字符串是否相同,不同则为“是”。
  在书写测试表达式时,可以使用表1.3.1中的字符串测试操作符。
   表1.3.1中 字符串测试操作符

特别注意:以上表格中的字符串测试操作符号务必要用" "引起来。

  字符串测试操作符提示:
    1. -n 比较字符串长度是否不为零,如果不为零则为真,如: [ -n "$myvar" ]
    2. -z 比较字符串长度是否等于零,如果等于零则为为真,如:[ -z "$myvar" ]
2. 整数二元比较操作符
    在书写测试表达式时,可以使用表1.3.6中的整数二元比较操作符
  表1.3.6中整数二元比较操作符、

提示:
   1) “<”符号意思是小于,if [[ "$a" < "$b" ]],if[ "$a" \< "$b" ]。在单[ ]中需要转义,因为shell也用<和>重定向
   2) “>”符号意思是小于,if [[ "$a" > "$b" ]],if[ "$a" \> "$b" ]。在单[ ]中需要转义,因为shell也用<和>重定向
   3) “=”符号意思是小于,if [[ "$a" = "$b" ]],if[ "$a" = "$b" ]。在单[ ] 中不需要转义
提示:
  经过实践,"=" 和 "!=" 在[ ]中使用不需要转义,包含">" 和"<" 的符号在[ ]中使用需要转义,对于数字不转义的结果未必会报错,但是结果可能不会对。
  范例1:二元数字比较

[root@test-1 ~]# [ 2 > 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 < 1 ] && echo 1 ||echo 0
1 #这里的结果逻辑不对,条件不成立,应该返回 0
[root@test-1 ~]# [ 2 \< 1 ] && echo 1 ||echo 0
0 #转义后是正确的。
[root@test-1 ~]# [ 2 -gt 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 -lt 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 > 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [[ 2 > 1 ]] && echo 1 ||echo 0
1
[root@test-1 ~]# [[ 2 < 1 ]] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 = 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 1 = 1 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 = 1 ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ 2 = 2 ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ 2 != 2 ] && echo 1 ||echo 0
0
提示:经过实践,“=”和“!=”在[ ]中使用不需要转义也可以。
[root@test-1 ~]# [[ 2 -lt 1 ]] && echo 1 ||echo 0
0
[root@test-1 ~]# [[ 2 -gt 1 ]] && echo 1 ||echo 0
1

范例2:二元字符比较

[root@test-1 ~]# [ "a" > "bc" ] && echo 1 ||echo 0
1
[root@test-1 ~]# [ "a" < "bc" ] && echo 1 ||echo 0
1 #上面两个条件不一样,但结果一样,虽然没报语法错误,但显然不对。
[root@test-1 ~]# [ "a" \> "bc" ] && echo 1 ||echo 0
0
[root@test-1 ~]# [ "a" \< "bc" ] && echo 1 ||echo 0
1
#加上对比较的转义后,逻辑上显示正确了。

  

最新文章

  1. Restful资源文章
  2. Python系统命令操作
  3. hightcharts 3d 堆积图下钻
  4. aop实现日志(转)
  5. windows dos命令窗口的环境变量
  6. win激活查询及修改
  7. UIview定义背景图片
  8. LeetCode Single Number (找不不重复元素)
  9. html的视频插件 (转)
  10. HW3.21
  11. PV 并发量的计算
  12. ubuntu logout 命令
  13. My.Ioc 代码示例——谈一谈如何实现装饰器模式,兼谈如何扩展 My.Ioc
  14. SOAP 简单对象访问协议
  15. 框架篇:Spring+SpringMVC+Mybatis整合开发
  16. Oracle-一个中文汉字占几个字节?
  17. you-get 下载视频
  18. 洛谷 P1162 填涂颜色
  19. dxRangeTrackBar使用教程
  20. Oracle Telnet 1521 失败

热门文章

  1. 跟着尚硅谷系统学习Docker-【day04】
  2. delphi DBgrid应用全书
  3. HTML标签语言一览表
  4. 面向对象--有参数的__init__方法
  5. 二、loadrunner参数化连接数据库
  6. random模块的应用
  7. ef6 code first,对已有数据库如何执行迁移
  8. 【好消息】博客迁移到github,求关注,求star,求支持
  9. FreeSWITCH 处理Refer盲转时,UUI传递不对(没有将SIP 消息头Refer-To中的User-to-User传递给B-Leg)
  10. 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD