zoukankan      html  css  js  c++  java
  • shell 数学运算

    数学运算之 expr

    expr操作符对照表

    比较大小,只能对整数进行比较,需要加空格,linux 保留关键字要转义

    num1=30
    num2=50
    expr $num1 > $num2
    

    查看上一条命令有没有执行成功

    echo $?

    返回0 成功,其他失败

    小于、小于等于、大于等于

    expr $num1 < $num2
    expr $num1 <= $num2
    expr $num1 >= $num2
    

     

    运算 加、减、乘、除

    # 加
    num1=17
    num2=5
    expr $num1 + $num2
    
    # 减
    num3=`expr $num1 + $num2`
    echo $num3
    
    expr $num1 - $num2
    
    # 乘
    expr $num1 * $num2
    expr $num1 / $num2
    
    # 取余数
    expr $num1 % $num2
    

      

     需要注意事项:

    两个小括号的计算方法,要赋值,否则会报错

    # 直接输出报错
    $(($num1+$num2))
    
    # 需要赋值给一个变量
    num3=$(($num1+$num2))
    echo $num3
    
    num3=$(($num1*$num2))
    echo $num3
    
    num3=$(($num1-$num2))
    echo $num3
    
    num3=$(($num1/$num2))
    echo $num3
    

     

     

    一些操作符在$(()) 不支持, 在比较运算的时候最好使用expr

    num1=5
    num2=5
    num3=$(($num1=$num2))
    

    expr $num1 = $num2

    练习例子  

    提示用户输入一个正整数num,然后计算1+2+3+...+num的值;必须对num是否为正整数做判断,不符合应当运行再次输入

    判断是否是一个正整数

    思路:

    • expr只能对整数进行计算,直接用expr 和一个整数计算获取 $? 的值来判断是否为整数
    • 在使用 expr $num1 > 0 判断是否大于0
    # 不是整数使用 expr 进行数学运算会出错
    num1=56.58
    expr $num1 + 1
    

      

     

    sum.sh

    #!/bin/bash
    #
    while true
    do
            read -p "please input a positive number: " num
            # 判断数是否是整数
            expr $num + 1 &> /dev/null
            if [ $? -eq 0 ];then
                    # 判断这个整数是否大于0,大于0返回1
                    if [ `expr $num > 0` -eq 1 ];then
                            #echo "yes,positive number"
                            # $sum没有赋值,默认为0
                            for((i=1;i<=$num;i++))
                            do
                                    sum=`expr $sum + $i`
                            done
                            echo "1+2+3+...+$num = $sum"
                            # 执行计算需要退出
                            exit
                    fi
            fi
            echo "error,input enlegal"
            continue
    done
    

    执行脚本

    sh sum.sh

    shell 运算之 bc

    bc 介绍:

    • bc 是bash内建的运算器,支持浮点数运算
    • 内建变量scale可以设置,默认为 0

    bc 操作符对照表

     

     交互测试

     

    脚本中使用管道符进行计算

    echo "23+33" | bc
    

    保留精度 scale=4; 用分号隔开

    echo "scale=4;23.3/3.5" | bc
    

    bc示例脚本

    bc.sh

    #!/bin/bash
    #
    
    read -p "num1: " num1
    read -p "num2: " num2
    
    #echo "scale=4;$num1/$num2" | bc
    
    num3=`echo "scale=4;$num1/$num2" | bc`
    
    echo "$num1 / $num2 = $num3"
    

    执行

    sh bc.sh
    

      

  • 相关阅读:
    appium---模拟点击事件
    python发送邮件(smtplib)
    postman---postman提示 Could not get any response
    postman---postman导出python脚本
    postman---postman生成测试报告
    python读写Excel方法(xlwt和xlrd)
    java求两个集合的交集和并集,比较器
    集合类型操作
    Random类和Math.random()方法
    final修饰和StringBuffer的几个案例(拼接,反转,对称操作)
  • 原文地址:https://www.cnblogs.com/crazymagic/p/11071871.html
Copyright © 2011-2022 走看看