语法格式

# 方法一
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
doread -p "Please input a positive number: " num# 做一个数学运算 结果放到垃圾桶expr $num + 1 &> /dev/null# 如果数学运算成功 $? 为 0  如果不成功返回非0 所以可以根据$?来判断整数if [[ $? -eq 0 && $num -gt 0 ]]; thensum=0for((i=1;i<=$num;i++))dosum=`expr $i + $sum`done echo "1+2...$num = $sum"exitelseecho "Number is invalid, pleace try again! "continuefi
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
复制代码

转载于:https://juejin.im/post/5d050a356fb9a07f0b03c0db

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

  1. python理解浮点数运算的误差_Python 浮点数运算

    浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...

  2. shell编程之数学运算

    1.基本语法 (1)"$((运算式))"或"$[运算式]" (2)expr + , - , *, /, % 加,减,乘,除,取余 注意:expr运算符间要有空格 ...

  3. python理解浮点数运算的误差_浮点数运算的机器误差分析

    感觉跟专栏主题不是很搭... 不过这是这学期计算物理的作业,还是放上来吧,也算勉强沾边了吧. 用一个浮点数相加的例子来演示计算机在计算时所产生的误差. 在Python中,用0.2+0.4 会得到0.6 ...

  4. Linux shell编程基础(1) —— 构建基本的shell脚本

    1.创建shell脚本文件以及执行shell脚本方法 (1)使用编辑器(如vim)创建一个文件test.sh,文件后缀为.sh. (2)在第一行指定要使用的shell 格式如下 #!/bin/bash ...

  5. Win32汇编:字符串浮点数运算过程

    整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...

  6. 浮点数运算的的规格化

    转自:http://blog.sina.com.cn/s/blog_9e1c5ee30101axuy.html 在尾数用补码表示时,规格化浮点数应满足尾数最高数位与符号位不同,如相同就是不满足规格化. ...

  7. python浮点数怎么运算_为什么说浮点数缺乏精确性? python中浮点数运算问题

    我想从两个角度回答: 一:十进制小数转化成二进制小数的方法.(简单举例,看完就可以自己用笔进行运算.) 二:如何解决python中的浮点数运算问题. 关于一: 拿1.375这个十进制数举例,pytho ...

  8. linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  9. linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  10. Shell数学计算(算术运算,加减乘除运算)

    声明: 本篇博客的学习途径主要为以下网站和课堂讲解,发博客目的仅为学习使用,在该博客的基础上做了一定程序的简略和修改. 参考博客 : 原文链接:http://c.biancheng.net/shell ...

最新文章

  1. C 语言的基本数据类型
  2. 多重循环控制(难点重点)
  3. foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...
  4. 斗地主AI算法——第七章の被动出牌(1)
  5. Manjaro下的实用命令搜集
  6. Nginx核心模块ngx_http_proxy_module与nginx反向代理、负载均衡详解
  7. HDU-2203-亲和串(kmp)
  8. ps 毛发 边缘_用PS给老旧黑白照片上色,亲妈级教学,简单实用,轻松搞定!
  9. owa outlook使用中的一些问题-陆续添加
  10. 关于技术问题的请教和解决步骤
  11. ip-sysctl.txt 文件
  12. Extra Credits: Project Ten Dollar 10
  13. Linux下conda 安装以后 activate无法使用
  14. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)
  15. android 问题-----Please execute 'adb uninstall com.newland.securityclient' in a shell.
  16. ng-zorro里的“Descriptions描述列表”使用
  17. mini LED 背光驱动芯片的发展
  18. Kubernetes学习笔记(一):Pod详解:Pod配置、Pod生命周期、Pod调度、容器设计模式
  19. 小程序这6个坑绝对不能踩
  20. lof基金溢价率php源码,一文读懂LOF基金套利策略 LOF是球友们很喜欢的一类基金,这类基金不仅可以在场内进行高效买卖,而且还可以进行折溢价套利。不过这里面牵扯到很多细节,... - 雪球...

热门文章

  1. T4 生成指定DB表实体
  2. VS2015搭建live555源码调试环境
  3. Linux部分命令使用说明
  4. springboot定制404错误信息
  5. 一个可以在Linux环境下找到,杀死,并重启Tomcat的脚本
  6. HDU1029 Ignatius and the Princess IV
  7. Android 四大组件学习之ContentProvider一
  8. 国内外优秀音视频博客
  9. Freeswitch 录制视频并播放
  10. RTP包里面得到H.264数据和AAC数据的方法