zoukankan      html  css  js  c++  java
  • Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较)

    一.概述

      接着上篇讲的结构化命令,最后讲到了test命令的另一种写法 if [ condition ],它的语法格式如下:

    --格式如下:
    if  [ condition ]
    then 
        commands
    fi

      第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错。test命令可以判断三类条件:(1)数值比较(2)字符串比较(3)文件比较。

      1.1  数值比较

    比较

    描述

    例如

    n1 -gq n2

    检查n1是否与n2相等 

    N1 ==N2

    n1 -ge n2

    检查n1是否大于或等于n2

    N1 >=N2

    n1 -gt n2

    检查n1是否大于n2

    N1 < N2

    n1 -le n2

    检查n1是否小于或等于n2

    N1 <=N2

    n1 -lt n2

    检查n1是否小于n2

    N1 <N2

    n1 -ne n2

    检查n1是否不等于n2

    N1 !=N2

        下面测试脚本中,第一个条件使用 -gt,  value1是否大于value2。 第二个条件使用-eq 测试value1 是否与value2相等。
              
        
    但涉及到浮点数时,就会出错,bash shell 只能处理整数,如下所示:

              

        对于浮点数处理,在前面章节中讲过使用bc 命令,下面脚本中先用bc来判断,如果条件成立则返回1, 条件不成立返回0, 下面的var1变量返回为1,输出了echo语句信息。
              

      1.2  字符串比较

    比较

    描述

    str1 = str2

     检查str1是否与 str2 相同

    str1 != str2

     检查str1是否与 str2 不同

    str1 < str2

     检查str1是否比 str2 小

    str1 > str2

     检查str1是否比 str2 大

    -n str1

     检查str1的长度是否非0

    -z str1

     检查str1的长度是否为0

        (1) 字符串相等案例, 相等成立,输出了echo 信息。不等于案例就不在演示。
              
        (2) 字符串比较
          对于字符串比较,在编程中很少使用,这里不在演示。 比较是使用标准的ascii顺序。
        (3) 字符串大小
          使用-n 和 -z 可以检查一个变量是否有数据,如下所示变量value1的值不为空,条件成立。
              
          下面一个案例是 value1变量从未被定义过, 判断长度是否为0,  未被定义的变量但长度仍然是0,输出了if then中的echo信息。
              
          总结:空的和未初始化的变量会对shell脚本测试造成空难性的影响,如果不确定一个变量的内容,最好在将用于数值或字符串比较之前先通过-z来测试变量是否有值。 下面案例中valu1变量未定义,value2变量内容为空,value3变量内容不为空, 分别输出信息如下:
              

  • 相关阅读:
    Java的格式化输出
    常用排序算法的Python实现
    零基础自学用Python 3开发网络爬虫(一)
    Python常见数据结构整理
    百度天气预报API的使用(java版本)
    大总结
    CCS学习(三)
    CSS学习(页外引用还不懂)
    CSS自定义动画
    ssm日期格式转换
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9791551.html
Copyright © 2011-2022 走看看