• 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 "

    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)) "
            printf "a-b=$(($a-$b)) "
            printf "a*b=$(($a*$b)) "
            printf "a/b=$(($a/$b)) "
            printf "a**b=$(($a**$b)) "
            printf "a%b=$(($a%$b)) "
            [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


  • 相关阅读:
    串口数据字节位的理解
    【转】arm-none-linux-gnueabi-gcc下载
    【转】网络排错全面详解
    【转】VMware虚拟机三种网络模式详解
    【转】vi编辑只读文档无法保存的解决办法
    【转】关于在linux下清屏的几种技巧
    【转】64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解
    ELF文件
    UCOSII内核代码分析
    vmware安装win7提示No CD-ROM drive to use:GCDROM not loaded
  • 原文地址:https://www.cnblogs.com/ExzaiTin/p/7990893.html
Copyright © 2020-2023  润新知