bash之基本运算符

作者: 多啦A梦的时光机_648d | 来源:发表于2020-02-09 19:37 被阅读0次

    一:算术运算符

    +  加
    -  减
    *  乘
    /  除
    %  取余
    =  赋值
    ==  相等
    !=  不想等
    
    * 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
    * expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
    * 注意使用的反引号(esc键下边)(((记住不是单引号,是esc下面的漂号)))
    * 表达式和运算符之间要有空格$a + $b写成$a+$b不行
    * 条件表达式要放在方括号之间,并且要有空格[ $a == $b ]写成[$a==$b]不行
    * 乘号(*)前边必须加反斜杠(\)才能实现乘法运算
    
    #!/bin/bash
    
    a=10
    b=20
    
    val=`expr $a + $b`
    echo "a + b : $val"
    
    val=`expr $a - $b`
    echo "a - b : $val"
    
    val=`expr $a \* $b`
    echo "a * b : $val"
    
    val=`expr $b / $a`
    echo "b / a : $val"
    
    val=`expr $b % $a`
    echo "b % a : $val"
    
    if [ $a == $b ]
    then
       echo "a == b"
    fi
    if [ $a != $b ]
    then
       echo "a != b"
    fi
    

    二:关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
    -eq 检查两个数是否相等,相等返回ture
    -ne 检查两个数是否相等,不相等返回ture
    -gt 检查左边数是否大于右边数,是则返回ture
    -lt 检查左边数是否小于右边数,是则返回ture
    -ge 检查左边数是否大于等于右边数,是则返回ture
    -le 检查左边数是否小于等于右边数,是则返回ture

    #!/bin/bash
    
    a=10
    b=20
    
    if [ $a -eq $b ]
    then
       echo "$a -eq $b : a == b"
    else
       echo "$a -eq $b: a != b"
    fi
    
    $bash test2.sh
    10 -eq 20: a != b
    

    三:逻辑运算符

    && 逻辑AND
    || 逻辑OR

    #!/bin/bash
    a=10
    b=20
    
    if [[ $a -lt 100 && $b -gt 100 ]]
    then
       echo "return true"
    else
       echo "return false"
    fi
    
    if [[ $a -lt 100 || $b -gt 100 ]]
    then
       echo "return true"
    else
       echo "return false"
    fi
    

    四:字符串运算符

    = 两个字符是否相等,相等返回ture
    != 两个字符是否相等,不相等返回ture
    -z 字符串长度是否为0,为0返回ture
    -n 字符串长度是否为0,不为0返回ture
    -str 字符串是否为空,不为空返回ture

    #!/bin/bash
    
    a="abc"
    b="efg"
    
    if [ $a = $b ]
    then
       echo "$a = $b : a == b"
    else
       echo "$a = $b: a != b"
    fi
    if [ -n $a ]
    then
       echo "-n $a : The string length is not 0"
    else
       echo "-n $a : The string length is  0"
    fi
    if [ $a ]
    then
       echo "$a : The string is not empty"
    else
       echo "$a : The string is empty"
    fi
    
    abc = efg: a != b
    -n abc : The string length is not 0
    abc : The string is not empty
    

    五:文件测试运算符

    文件测试运算符
    #!/bin/bash
    
    file="/home/shiyanlou/test.sh"
    if [ -r $file ]
    then
       echo "The file is readable"
    else
       echo "The file is not readable"
    fi
    if [ -e $file ]
    then
       echo "File exists"
    else
       echo "File not exists"
    fi
    

    思考:

    1. 浮点运算

    expr 只能用于整数计算,可以使用 bc 或者 awk 进行浮点数运算。
    bc 命令是任意精度计算器语言,通常在linux下当计算器用。它类似基本的计算器, 使用这个计算器可以做基本的数学运算
    
    
    #!/bin/bash
    
    raduis=2.4
    
    pi=3.14159
    
    girth=$(echo "scale=4; 3.14 * 2 * $raduis" | bc)  ##scale指保留小数点位数,但对乘法无效
    
    area=$(echo "scale=4; 3.14 * $raduis * $raduis" | bc)
    
    echo "girth=$girth"
    
    echo "area=$area"
    

    但是对除法等是有效的,例如

    #!/bin/bash
    yushu=$(echo "scale=5; 20 / 3" | bc)
    echo "yushu=$yushu"
    
    6.66666
    

    矩阵面积及周长

    #!/bin/bash
    a=3
    b=2
    echo `expr $a \* $b`
    

    周长

    #!/bin/bash
    a=3
    b=2
    c=`expr $a + $b`
    echo `expr $c \* 2`
    

    相关文章

      网友评论

        本文标题:bash之基本运算符

        本文链接:https://www.haomeiwen.com/subject/mzrnxhtx.html