bash数学运算之bc
2024-10-06 11:42:48
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
最新文章
- node上截取图片工具 images(node-images)
- php中CURL实现模拟登录并采集数据
- 使用VIM插件ctags来阅读C代码
- swith 好久不用都忘记了
- [刷题]Codeforces 746G - New Roads
- MySQL学习笔记(二):MySQL数据类型汇总及选择参考
- Elasticsearch-sql 用SQL查询Elasticsearch
- WebUploader分片断点上传文件(二)
- 微信第三方全网发布接入检测(PHP)
- gravity和layout_gravity的区别
- NSSM安装服务
- return -1 、return 1 、 return 0 的区别
- ADO.NET 基本操作
- 个人博客作业Week7(阅读文章,心得体会)
- nginx 默认访问index.php
- ubantu创建python虚拟环境
- 《Python黑帽子:黑客与渗透测试编程之道》 扩展Burp代理
- EF实体对象解耦 - 泛型联表查询
- thinkphp session如何取数组
- HTML <;meta>; Attribute