数学运算expr,bc

expr语法

语法
方法一expr $num1 operator $num2
方法二$(($num1 operator $num2)) (这样的运算必须要给一个属性赋值,这种运算不需要转义,该操作只能进行加减乘除)

operator : 操作符号(+ - * / %)


expr操作符对照表

操作符含义
num1 | num2num1不为空且非0,返回num;否则返回num2
num1 & num2num1不为空且非0,返回num1;否则返回0
num1 < num2num1小于num2,返回1,否则返回0
num1 <= num2num1小于等于num2,返回1,否则返回num2
num1 = num2num1等于num2,返回1,否则返回0
num1 != num2num1不等于num2,返回1;否则返回0
num1 > num2num1大于num2,返回1;否则返回0
num1 >= num2num1大于等于num2,返回1;否则返回0
num1 + num2求和
num1 - num2求差
num1 * num2求积
num1 / num2求商
num1 % num2求余

| & > < >= <= * 等特殊符号需要\进行转义


练习例子:
提示用户输入一个正整数num,然后计算1+2+3+。。。+num的值;必须对num是否为正整数做判断,不是正整数提示用户重新操作

#!/bin/bash
#

while true
do
        read -p "请输入一个正整数:" num
		# 只有整数才可以计算,把结果扔到垃圾桶里,不需要运算的结果
        expr $num + 1 &> /dev/null

        #非整数不能相加,等于0代表是整数, $?获取返回值
        if [ $? -eq 0 ];then
                # 判断输入的数是正数
                if [ `expr $num \> 0` -eq 1 ];then
                        echo "输入的数$num 是个正整数"
                        for((i=1; i<=$num; i++))
                        do
                                sum=`expr $sum + $i`
                                echo "现在sum 等于 $sum"
                        done
                                echo "1+2+3...+num = $sum"
                        exit
                else 
                        echo "输入的数$num 不是一个正整数,请重新输入"
                        continue
                fi
        else
                echo "输入的数$num 不是一个整数,请重新输入"
                continue
        fi
done

bc介绍

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

操作符含义
num1 + num2求和
num1 - num2求差
num1 * num2求积
num1 / num2求商
num1 % num2求余
num1 ^ num2指数运算

在这里插入图片描述

scale默认是0,所有只能除法运算时只能获取到整数。

  • 在脚本中使用 bc 可以用字符串计算通过管道传给bc
    在这里插入图片描述
  • 也可以指定scale值,需要用分号隔开
    在这里插入图片描述
  • 一个简单的脚本
#!/bin/bash
#

read -p "请输入第一个数" num1
read -p "请输入第二个数" num2

num3=`echo "scale=4; $num1 * $num2" | bc`

echo "第一个数乘第二个数等于$num3"

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值