shell 中进行算术计算的各种方法

shell中,无法直接进行算术运算,如果直接进行算术运算会出现如下情况。

1.shell中进行算术运算的各种方法:

默认情况下,shell不会直接进行算术运算,而是把"算术符号"当做"字符串"与两个变量的值连接在了一起,形成了一个新的字符串,那么,在bash中,应该怎样进行算术运算呢?细分之下,常用方法有6种,如下。

此处先对各种方法进行概述,后续会针对每种方法给出示例:

(1) 使用let命令进行算术运算,只支持整数运算。

(2) 使用expr命令进行算术运算,只支持整数运算。

(3) 使用运算语法:$[算术表达式]只支持整数运算。

(4) 使用运算语法:$((算术表达式))只支持整数运算。

(5) 在初始化变量时,将变量定义为"整数"类型,则可直接进行整数运算。

(6) 使用bc命令进行算术运算,支持整数和小数运算。

(7) 使用awk命令进行算数运算,支持整数和小数运算。

2.方法一:借助let命令进行整数运算

在这里插入图片描述
从上图中可以看到,当借助let命令进行算术运算时,"运算过程"与"运算结果"中都不会包含小数,而且这种方法需要借助一个变量,将计算后的值赋值给这个变量后进行输出,但是let命令是shell内建命令,这是它的优势,只要当前服务器上存在shell,即可使用它进行整数运算。

3.方法二:借助expr命令进行算术运算

expr命令也支持算术运算功能,虽然它的功能不止于此,但是此处我们只使用它进行算术运算,expr命令与let命令相似,也只能进行整数运算,而且,使用expr命令进行算术运算时,需要注意以下两点

1、数值与运算符号之间需要用空格隔开,否则无法进行算术运算。

2、使用expr命令进行乘法运算时,需要将"乘号"转义,否则会报错。

示例如下,下图中的红线标注的部分体现了上述两点注意点
在这里插入图片描述
当然,如果我们想要使用经过计算过的值,可以使用’命令引用’。
在这里插入图片描述

4.方法三:借助bc命令进行算术运算

bc命令大家可能已经很熟悉了,它是linux下最常用的"计算器",我们可以借助bc命令进行算术运算,使用这种方法的优势就是支持小数运算。

注意:在使用"除法"时,需要指定小数点精度,否则运算结果中不会包含小数,使用scale指定小数点精度。

示例如下:
在这里插入图片描述
上图中,如果使用bc命令进行除法运算,同时希望计算结果按照指定的精度显示,需要使用scale指定小数点精度,上图中scale=3表示显示小数点后面的三位精度。

但是需要注意,当使用bc命令时,如果运算结果为不到1的小数,则不会显示小数点前面的"零",示例如下。

在这里插入图片描述

5.方法四:使用运算语法 $[算术表达式]

在这里插入图片描述

6.方法五:使用运算语法 $((算术表达式))

在这里插入图片描述

7.方法六:将变量声明为整形

这种方法也比较简单,可以直接将变量声明为"整数",然后即可直接进行整数运算,示例如下在这里插入图片描述

8. 方法七:使用awk命令

情况具体示例

加减乘除

[root@cnblogs ~]#  t1=1
[root@cnblogs ~]# t2=3
[root@cnblogs ~]# awk 'BEGIN{print '$t1'+'$t2'}'
4
[root@cnblogs ~]# awk 'BEGIN{print '$t1'-'$t2'}'
-2
[root@cnblogs ~]# awk 'BEGIN{print '$t1'*'$t2'}'
3
[root@cnblogs ~]# t1=1
[root@cnblogs ~]# t2=3
[root@cnblogs ~]# awk 'BEGIN{print ('$t1'/'$t2')}'
0.333333
#因为没有限制小数点位数
#下面是控制位数的,使用printf
awk 'BEGIN{printf "%.1f\n",('$t1'/'$t2')}'
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值