Linux shell编程与实践(二)之shell程序中的运算和比较操作

1、shell运算操作

  (1)let整数运算

      (a)let命令介绍

        let命令让BASH shell执行算数值操作,使用let,可以比较两个值或执行加减乘除等这样的算数操作,这样的操作经常用于shell程序中的控制流程结构或执行需要的运算,注意let命令只能执行整数的相关运算,运算结果也只能保存整数。

        使用方法:

          let 变量名 = 变量1 运算符 变量2 (写惯了java C这些有空格好看一点的有点不能习惯不能加空格)

          

          

 

      (b)常见的算数操作

          加法:+

          减法:-

          乘法:*

          除法:/

          取余数:%

        注意:和c语言类似,let=$i+1也可以写成let i++ 从而简化书写

        

      (c)let方法来控制流程结构

         注意while 和 if 那里有空格

        

         

  (2)expr整数运算

    (a)expr在linux中是一个功能非常强大的命令,和let功能类似,它做算数运算时,只能进行整数类型的运算,不能保存小数结果,除了进行算数运算,expr还可以进行字符串的操作,因此,expr功能非常强大。

    (b)expr使用方法:

        expr expression1 操作符 expression2

        乘法操作符前必须加‘\’用于转义,并且操作两个expression之间必须要有空格(这一点和let不同)。并且expr不能用于小数运算

    (c)常见的算数操作分类:

          加法:+

          减法:-

          乘法:*    (要加\避免和字符串操作的*冲突)

          除法:/

          取余数:%

      

        

    (d)expr方法来控制流程结构     

  (3)bc浮点运算

      let和expr不能处理浮点运算,并且缺乏特定的一些重要的精确操作,但是bc可以进行浮点运算,是一个多功能的灵活的工具,提供精度的复杂计算功能,经常运用在管道里。

     bc的使用方法

      variable= `echo “OPTIONS; OPERATIONS” | bc` ,scale作为bc一个最重要的option,用来输出小数的位数。

      

      

       

  (4)字符串运算

     shell中字符串操作也是常见的运算之一,expr除了进行算数运算之外,还可以进行字符串相关的运算。

     (1)输出字符串长度

      

    (2)取子串操作(和matlab一样,expr也是从1开始计数,但是用echo取字符串就是从0开始计数)

      expr substr $string position length

      echo ${string:position:length}

      

    (3)字符串的连接操作

      

    (4)字符串的替换操作

      用正的斜划线替换:(两条斜划线表示全部替换,一条就只替换一次)

       

2、test比较操作

    测试比较两个值是linux中常用的比较运算,test命令可以进行对两个值的比较,如果比较成功则返回值为0,否则为非0 

    test的命令语法

      test value1 -option value2

      如果成功则$?为0,否则返回非0

  (1)整数比较

    (a)test整数比较方法:

大于 -gt
小于 -lt
大于等于 -ge
小于等于 -le
等于 -eq
不等于 -ne

      

      

  (2)字符串比较

    (b)字符串比较的方法

测试空字符串(字符串为空,返回值为0) -z
测试字符串的长度为非零(长度不为零,返回值为0) -n
等于某一个字符串 (字符串相等,返回值为0) =
不等于某个字符串  (字符串不相等,返回值为0) !=

      

              

  (3)逻辑操作

    (a)test逻辑操作的比较方法:

逻辑或 -o
逻辑与 -a
逻辑非

  (4)文件测试

    (a)文件比较的方法:

文件存在并且是一个常规文件 -f
文件不为空       -s
文件可读 -r
文件可写(修改) -w
文件可运行 -x
文件是一个目录名 -d
文件是一个符号链接 -h
文件名引用一个字符设备 -c
文件名引用一个块文件 -b

    (b)文件类型:常规文件(-)、目录文件(d)、字符设备或块文件(c),块文件(b)、套接口文件(s)符号链接文件(l)

posted @ 2018-03-16 20:52  Bit_bo  阅读(433)  评论(0编辑  收藏  举报