shell--数值的计算

1. 算术运算符

    +、-                         ##加法(或正号)、减法(或负号)
    *、/、%                      ##乘法、除法、取余
    **                           ##幂运算
    ++、--                       ##增加或减少常见格式为i++、i--
    !、&&、||                    ##逻辑非(取反)、逻辑与、逻辑或
    <、<=、>、>=                 ##比较符号
    ==、!=、=                    ##相等、不等、赋值
    <<、>>                       ##向左移位、向右移位
    ~、|、&、^                   ##按位(取反、异或、与、或)
    =、+=、-=、*=、/=、%=        ##赋值运算符i=i+相当于i=i+1或i++

2. “(())”数值的运算

    ((i=i+1))            #这种方法为运算后赋值法,将i+1的运算结果赋值给变量i,不能直接赋值使用 echo$((i=I=1))
    i=$((i+1))           #可以在"(())"前加$符,表示将表达式运算后的赋值给i
    ((8>7&&5==5))        #可以进行比较操作。还可以加入逻辑运算
    echo $((2+1))        #直接输出结果

       例:一个1到10的累加

            #!/bin/bash
            sum=0
            for((i=1;i<=10;i++)); do
               sum=$(($i+$sum))
            done
            echo "$(seq -s + 1 10)=$sum\n"

3. let命令运算

        [root@test ~]# i=2
        [root@test ~]# let i=i+2
        [root@test ~]# echo $i
        4

4. expr命令的用法(用于判断是否为一个整数)

        [root@test ~]# expr 1 + 2
        3
        [root@test ~]# expr 1 - 2
        -1
        [root@test ~]# expr 1 \* 2        #*在这里为了防止和通配符冲突需要转义
        2
        [root@test ~]# expr 1 / 2      #expr的值为整数
        0

例:一个简单的判断是否为整数

        [root@test ~]# cat expr_test.sh
        #!/bin/bash
        #判断是否传入两个参数‘
        a=$1
        b=$2
        [ $# -ne 2 ] && {
               echo "请输入两个参数"
               exit 1
        }
        #判断时候为整数
        expr $a + $b &>/dev/null
        if [ $? -ne 0 ]; then
            echo "请输入两个整数"
            exit 1
        fi
        #计算两个数
        printf "a+b=$(($a+$b))\n"
        printf "a-b=$(($a-$b))\n"
        printf "a*b=$(($a*$b))\n"
        printf "a/b=$(($a/$b))\n"
        printf "a**b=$(($a**$b))\n"
        printf "a%b=$(($a%$b))\n"
        [root@test ~]# sh expr_test.sh 5 8
        a+b=13
        a-b=-3
        a*b=40
        a/b=0
        a**b=390625
        a=5

5. bc命令(支持小数)
        [root@test ShellScripts]# echo 8.8+5|bc
        13.8
        [root@test ShellScripts]# echo "scale=2;8.8858/5"|bc  ##保留两位小数
        1.77
        [root@test ShellScripts]# echo "scale=8;8.8858/5"|bc    ##保留8位小数
        1.77716000
6. awk命令(支持小数)
        [root@test ShellScripts]# echo "232 212" |awk '{print ($1+$2)/$1}'
        1.91379
7. $[]符号(不支持小数)
        [root@test ShellScripts]# i=3
        [root@test ShellScripts]# i=$[i+8]
        [root@test ShellScripts]# echo $i
        11
        [root@test ShellScripts]# echo $[3/5]
        0


posted on 2017-12-06 08:13  ExzaiTin  阅读(245)  评论(0编辑  收藏  举报

导航