shell编程(五):bash数学运算值expr

数学运算的两种方式

语法
方法一expr $num1 opeartor $num2
方法二$(($num1 operator $num2))

expr 操作符对照表

expr支持正常的操作符。

操作符含义
num1 | num2num1不为空且非0,返回num1,否则返回num2
num1 & num2num1不为空且非0,返回num1,否则返回0

示例

数值比较操作(> < >= <= != =)

num1=100
num2=50
expr num1 \> num2 # 此处要加\ 因为> 在shell中是重定向符号
>>>1

运算后赋值到其他变量

num3=`expr $num1 \* $num2` # 需要转义符号 
num3=$(($num1 * $num2)) # 无需转义
$(($num1 * $num2)) # 直接在命令行中写是会报错的

注意:$(())可能不支持某些运算符号

num1=20
num2=30
num3=$(($num1=$num2))
>>>20=30: attempted assignment to non-variable (error token is "=30")
num3=`expr $num1 = $num2`
>>> num3=0

练习
计算1+2+3…+num的和,判断用户输入的num是否为正整数,不符合则继续提示用户输入

# 判断是否为正整数思路
1.$num + 1 如果执行结果为0,说明是整数
2.`expr $num \> 0` -eq 1 判断大于0
#!/bin/bash
#
while true
do
        read -p "please input a positive number:" num
        expr $num + 1 &> /root/shell/null
        if [ $? -eq 0 ];then
                if [ `expr $num \> 0` -eq 1 ];then
                        echo "yes"
                        for((i=1;i<=$num;i++))
                        do
                                sum=`expr $sum + $i`
                        done
                        echo "1+2+3+...+$num = $sum"
                        exit
                fi
        fi
        echo "erro"
        continue
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值