zoukankan      html  css  js  c++  java
  • shell-字符串及整数操作符讲解与多实践

    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
    #加上对比较的转义后,逻辑上显示正确了。
    

      

  • 相关阅读:
    测试工作——XML
    js call apply
    JavaScript 作用域和作用域链
    hybird app
    正则表达式
    浏览器渲染原理
    head 头标签(转发)
    参考资料地址
    unix 常用命令
    phantomjs 自动化测试
  • 原文地址:https://www.cnblogs.com/scajy/p/12806988.html
Copyright © 2011-2022 走看看