美文网首页
Shell编程—【03】数学运算expr与bc浮点数运算

Shell编程—【03】数学运算expr与bc浮点数运算

作者: 苡仁ilss | 来源:发表于2019-05-19 17:22 被阅读0次

    Shell编程系列 https://www.jianshu.com/nb/37140890

    数学运算

    语法格式

    # 方法一
    expr $num1 operator $num2
    # 方法二
    $(($num1 operator $num2))
    

    expr 操作符表

    操作符 含义
    num1 | num2 num1不为空且非0,返回num1;否则返回num2
    num1 \& num2 num1不为空且非0,返回num1;否则返回0
    num1 \< num2 num1小于num2,返回1;否则返回0
    num1 \<= num2 num1小于等于num2,返回1;否则返回0
    num1 = num2 num1等于num2,返回1;否则返回0
    num1 != num2 num1不等于num2,返回1;否则返回0
    num1 \> num2 num1大于num2,返回1;否则返回0
    num1 \>= num2 num1大于等于num2,返回1;否则返回0
    num1 + num2
    num1 - num2
    num1 \* num2
    num1 / num2
    num1 % num2 取余
    • 注意: | & < > * expr需要使用\转译
    • $(( ))不需要转译 注意此种运算方式不支持= 和!= 推荐:只使用 + - * / 和 %
    • expr数学运算只能对整数 不支持浮点数
    num1=30
    num2=50
    expr $num1 \> $num2
    # 0
    expr $num1 \<= $num2
    # 1
    expr $num1 \* $num2
    # 1500
    expr $num1 + $num2
    # 80
    
    # 使用命令替换赋值
    num3=`expr $num1 - $num2`
    echo $num3
    # -20
    
    # 使用$$((  ))
    num3=$((num1+num2))
    echo $num3
    

    练习

    • 用户输入一个正整数num 然后计算1+2+3+...+num,输出结果
    #!/bin/bash
    
    while true
    do
        read -p "Please input a positive number: " num
        # 做一个数学运算 结果放到垃圾桶
        expr $num + 1 &> /dev/null
        # 如果数学运算成功 $? 为 0  如果不成功返回非0 所以可以根据$?来判断整数
        if [[ $? -eq 0 && $num -gt 0 ]]; then
            sum=0
            for((i=1;i<=$num;i++))
            do
                sum=`expr $i + $sum`
            done 
            echo "1+2...$num = $sum"
            exit
            else
            echo "Number is invalid, pleace try again! "
            continue
        fi
    done
    

    浮点数运算

    • bc
    1. bc是bash内建的运算容器,支持浮点数运算
    2. 内建变量scale(精确度,可以理解为小数位数)可以设置,默认为0
    3. bc有的linux内置,有的没有内置 (我使用centos 7.x server 是没有的 可以直接yum install bc

    bc操作符对照表

    操作符 含义
    num1 + num2
    num1 - num2
    num1 * num2
    num1 / num2
    num1 % num2 取余
    num1 ^ num2 指数运算

    演示

    echo "23 / 12" | bc
    # 1
    echo "23.2 + 12" | bc
    # 35.2
    echo "scale=2; 23.3 / 12" | bc
    # 1.94
    echo "10 / 3 * 2" | bc
    # 6
    echo "scale=4; 10 / 3 * 2" | bc
    # 6.6666
    
    # 加减法小数运算可以不指定scale,但是乘除如果有小数一定要加scale
    

    输入两个数相加

    #!/bin/bash
    
    read -p "Please input num1:" num1
    read -p "Please input num2:" num2
    # 加法可以不用指定scale可以小数相加
    result=`echo "$num1 + $num2" | bc`
    
    echo $result
    

    相关文章

      网友评论

          本文标题:Shell编程—【03】数学运算expr与bc浮点数运算

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