bash数学运算之bc
expr
语法
注意必须有空格
只能精确到整数,无法精确到浮点数

操作符对照表

使用expr命令时需要加\进行转义,因为部分符号是保留关键字

例1:比较num1跟num2的大小
[root@localhost ~]# num1=30
[root@localhost ~]# num2=50
[root@localhost ~]# expr $num1 \> $num2
0
[root@localhost ~]# num3=`expr $num1 \> $num2`
其余以此类推
例2:使用$(())求积
注意*会自动转义,不需要转义符号
不能进行等于,不等于运算,所以比较运算建议使用expr命令
[root@localhost ~]# num1=30
[root@localhost ~]# num2=20
[root@localhost ~]# echo $(($num1*$num2))
600
练习题
要求:提示用户输入一个正整数num,计算1+2+3+…+num的值。
需要判断是否为整数
[root@localhost ~]# num1=56.1
[root@localhost ~]# expr $num1 + 1
expr: 非整数参数
[root@localhost ~]# echo $?
2
#可以看到报错,输出结果为2
[root@localhost ~]# num1=56
[root@localhost ~]# expr $num1 + 1
57
[root@localhost ~]# echo $?
0
#输出结果为0表示执行成功
答案
[root@localhost ShellScript]# cat example_4.sh
#!/bin/bash
while true
do
read -p "pls input a positive number:" num
expr $num + 1 &> /dev/null
if [ $? -eq 0 ];then
if [ `expr $num \> 0` -eq 1 ];then
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"
done
答案
bc
语法
bc是bash自带的运算器,支持浮点数运算
如果不指定scale变量,默认还是得到的整数
自带变量scale可以设置,默认为0,也就是为整型
支持+,-,*,/,%,^运算
num1 + num2
num1 - num2
num1 * num2
num1 / num2
num1 % num2
num1 ^ num2 //指数运算
例子
输入bc回车进入互动模式
[root@localhost ShellScript]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
5+5
10
5/3
1
scale=2 //保留小数点后两位
23/5
4.60
或者
[root@localhost ShellScript]# echo "12+45" | bc
57
通过scale设置精确度
[root@localhost ShellScript]# echo "scale=4;12.56*45.88" | bc
576.2528
简易到爆的乘法计算器
[root@localhost ShellScript]# cat 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 $num3
bash数学运算之bc的更多相关文章
- SHELL脚本--数学运算和bc命令
		
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 使用let.(()).$(())或$[]进行基本的整数运算,使 ...
 - Shell bash 数学运算 bc
		
1.bc命令可以完成浮点数的运算.其中 scale可以指定保留的小数点位数. 2.举例 例1: 例2:
 - Linux shell 变量 数学 运算
		
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
 - 哪一个 bash 内置命令能够进行数学运算?
		
bash shell 的内置命令 let 可以进行整型数的数学运算. #! /bin/bash--let c=a+b--
 - 哪一个 bash 内置命令能够进行数学运算?
		
bash shell 的内置命令 let 可以进行整型数的数学运算. #! /bin/bash - - let c=a+b - -
 - Linux Shell 数学运算
		
Linux Shell 数学运算 在Linux中直接使用数学运算符进行数学运算往往得不到我们想要的计算结果.要在Shell中进行数学运算,我们需要借助点小手段.目前,Linux Shell中进行数学运 ...
 - 在终端(Terminal)里用命令行进行数学运算
		
有时候我们进行一些数学运算,我们会去开系统自带的计算来做这件事情,其实我们也可以直接在终端里面用命令行进行的. 在命令行里敲 bc 进入数学计算模式,然后随便输入数学表达式 回车 ,结果就出来了,是不 ...
 - shell脚本中的数学运算
		
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法.以后用到的时候能够来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...
 - Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
		
1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...
 
随机推荐
- 使用node.js实现apache功能
			
1.先实现在url中输入文件路径能展示对应文件内容功能 const http = require('http') const fs = require('fs') const server = htt ...
 - tomcat虚拟路径的配置方法
			
方式一: 将web项目配置到webapps以外的目录 在conf/server.xml中配置,找到<host>标签,<Content docBase="E:\yqs\Jsp ...
 - Beego 输出数据格式JSON、XML、JSONP
			
JSON.XML.JSONP beego 当初设计的时候就考虑了 API 功能的设计,而我们在设计 API 的时候经常是输出 JSON 或者 XML 数据,那么 beego 提供了这样的方式直接输出: ...
 - QPixmap和QImage
			
1.QPixmap QPixmap的设计本来就是用来加速显示,用paint绘图时用QPixmap会比其他类的效果好很多.一般小图片用QPixmap. 2.QImage 依赖软件,直接像素访问,适合大图 ...
 - Visionpro学习笔记(壹)
			
注册4年,第一次发了随笔.我的博客将主要涉及到visionPro软件的学习,labview数据采集方面的思考,c#及VS的学习 此随笔系列主要是关于VisionPro(以后简称VP)的学习及使用. 近 ...
 - ISE post-place&route仿真准备
			
ISE post-place&route仿真准备 使用目的:post-place&route仿真是综合后考虑门延时而进行的仿真.因为考虑到各个门的延时,所以可以发现行为仿真(behav ...
 - laravel手动数组分页
			
laravel文档中已经有写如何自己使用分页类去分页了,但没有详细说明. 如果你想手动创建分页实例并且最终得到一个数组类型的结果,可以根据需求来创建 IlluminatePaginationPagin ...
 - Vue的H5页面唤起支付宝支付
			
目前项目中比较常用的第三方支付无非就是支付宝支付和微信支付.下面介绍一下Vue中H5页面如何使用支付宝支付.其实很简单的,只不过是调自己后台的一个接口而已(后台根据支付宝文档,写好支付接口). 触发支 ...
 - 初识linux&常用命令&目录文件的浏览和管理
			
Linux系统的主要用途:主要用于服器务器,特别是网络服务 Linux命令格式 命令 [选项] [ 参数] 命令:告诉操作系统做什么,执行什么 选项:说明命令的运行方式(可以改变命令的功能).选 ...
 - linux 第一个知识点(my)
			
关于Linux - rwx rwx rwx root user 194 Oct : 19 21:24 test -:此符号为文件名,如果是d 则为目录,如果是l 则为连接 rwx: 这是所有者所有的 ...