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

最新文章

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

热门文章

  1. 拍摄UFP 单一职责原则
  2. jsx中的路径拼接
  3. 4~20MA 转 电压输出
  4. ADO.NET事务封装
  5. 一文看懂AI深度学习丨曼孚科技
  6. hibernate.exception.GenericJDBCException: could not extract ResultSet 解决办法
  7. 重启监听卡在connecting to的问题
  8. linux服务基础之编译安装nginx
  9. [SCOI2015]情报传递[树剖+主席树]
  10. 【1】Logistic回归