博客
关于我
shell 数学运算
阅读量:340 次
发布时间:2019-03-04

本文共 1831 字,大约阅读时间需要 6 分钟。

 

数学运算之 expr

expr操作符对照表

 

 

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

1

2

3

num1=30

num2=50

expr $num1 \> $num2

 

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

1

echo $?

返回0 成功,其他失败

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

1

2

3

expr $num1 \< $num2

expr $num1 \<= $num2

expr $num1 \>= $num2

 

 

运算 加、减、乘、除

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# 加

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

  

 

 需要注意事项:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 直接输出报错

$(($num1+$num2))

 

# 需要赋值给一个变量

num3=$(($num1+$num2))

echo $num3

 

num3=$(($num1*$num2))

echo $num3

 

num3=$(($num1-$num2))

echo $num3

 

num3=$(($num1/$num2))

echo $num3

 

 

 

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

1

2

3

num1=5

num2=5

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

 

1

expr $num1 = $num2

 

练习例子  

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

 

判断是否是一个正整数

思路:

  • expr只能对整数进行计算,直接用expr 和一个整数计算获取 $? 的值来判断是否为整数
  • 在使用 expr $num1 \> 0 判断是否大于0

1

2

3

# 不是整数使用 expr 进行数学运算会出错

num1=56.58

expr $num1 + 1

  

 

sum.sh

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/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

 

执行脚本

1

sh sum.sh

 

shell 运算之 bc

bc 介绍:

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

bc 操作符对照表

 

 交互测试

 

 

 

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

1

echo "23+33" | bc

 

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

1

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

 

bc示例脚本

bc.sh

1

2

3

4

5

6

7

8

9

10

11

#!/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"

 

执行

1

sh bc.sh

 

 

  

转载地址:http://meyr.baihongyu.com/

你可能感兴趣的文章
大佬龟叔写的一个无聊程序
查看>>
linux 下安装kolla报错 提示Cannot uninstall requests
查看>>
Linux MySQL的socket文件存在位置更改
查看>>
Linux RPM和yum命令的使用技巧
查看>>
Python 使jupyter notebook 从指定浏览器启动 以及编程中途更换浏览器
查看>>
写博客常用的字体颜色(待续)
查看>>
C++ throw、try、catch、noexcept
查看>>
vim之vim滚屏与跳转
查看>>
C指针之函数指针与typedef
查看>>
CentOS8 字体大小调整
查看>>
设计模式之组合模式
查看>>
设计模式之外观模式
查看>>
Linux 验证、数字证书、RPM包中文件的提取
查看>>
《Redis开发与运维》阅读笔记:键管理之单个键管理
查看>>
(CMake):指定标准进行编译、CMake官方文档查看
查看>>
(恋上数据结构笔记):优先级队列(Priority Queue)
查看>>
(Python学习笔记):条件语句
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):并发基本概念及实现,进程、线程基本概念
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>