Shell中那些你必须知道的数值运算

本文介绍了在Shell中进行数值运算的几种方法,包括使用expr命令、[]或(())表达式以及let命令进行整数运算,详细展示了各种运算操作的实例。此外,还讲解了如何利用bc工具进行小数运算,既可以在交互模式下操作,也可以通过非交互式方式进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤一:整数运算工具
1)使用expr命令
乘法操作应采用 * 转义,避免被作为Shell通配符;参与运算的整数值与运算操作符之间需要以空格分开,引用变量时必须加$符号。
首先定义变量X=1234,然后分别计算与78的加减乘除和求模运算结果:

1.	[root@dyy ~]# X=1234                              //定义变量X
2.	[root@dyy ~]# expr  $X  +  78                      //加法
3.	1312
4.	[root@dyy ~]# expr  $X  -  78                       //减法
5.	1156
6.	[root@dyy ~]# expr  $X  \*  78                      //乘法,操作符应添加\转义
7.	96252
8.	[root@dyy ~]# expr  $X  /  78                      //除法,仅保留整除结果
9.	15
10.	[root@dyy ~]# expr  $X  %  78                     //求模
11.	64

2)使用 [ ] 或 []或 [](())表达式
乘法操作*无需转义,运算符两侧可以无空格;引用变量可省略 $ 符号;计算结果替换表达式本身,可结合echo命令输出。
同样对于变量X=1234,分别计算与78的加减乘除和求模运算结果:

1.	[root@dyy ~]# X=1234   
2.	[root@dyy ~]# echo $[X+78]
3.	1312
4.	[root@dyy ~]# echo $[X-78]
5.	1156
6.	[root@dyy ~]# echo $[X*78]
7.	96252
8.	[root@dyy ~]# echo $[X/78]
9.	15
10.	[root@dyy ~]# echo $[X%78]
11.	64

3)使用let命令
expr或 [ ] 、 []、 [](())方式只进行运算,并不会改变变量的值;而let命令可以直接对变量值做运算再保存新的值。因此变量X=1234,在执行let运算后的值会变更;另外,let运算操作并不显示结果,但是可以结合echo命令来查看:

1.	[root@dyy ~]# X=1234  
2.	[root@dyy ~]# let y=X+22
3.	[root@dyy ~]# echo $y
4.	1256
5.	[root@dyy ~]# let X++;  echo $X        # X++(X=X+1)
6.	[root@dyy ~]# let X--;  echo $X        # X--(X=X-1)
7.	[root@dyy ~]# let X+=78 ; echo $X        # X+=78(X=X+78)
8.	[root@dyy ~]# let X-=78 ; echo $X     # X-=78(X=X-78)
9.	[root@dyy ~]# let X*=78 ; echo $X     # X*=78(X=X*78)
10.	[root@dyy ~]# let X/=78 ; echo $X     # X/=78(X=X/78)
11.	[root@dyy ~]# let X%=78 ; echo $X     # X%=78(X=X%78)

步骤二:小数运算工具
1)bc交互式运算
先执行bc命令进入交互环境,然后再输入需要计算的表达式。以计算小数12.34与5.678的四则运算为例,相关操作如下:

1.	[root@dyy ~]# bc 
2.	bc 1.06.95
3.	Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
4.	This is free software with ABSOLUTELY NO WARRANTY.
5.	For details type `warranty'. 
6.	12.34+56.78                                        //加法
7.	69.12
8.	12.34-56.78                                        //减法
9.	-44.44
10.	12.34*56.78                                        //乘法
11.	700.66
12.	12.34/56.78                                        //除法
13.	0
14.	quit                                              //退出交互计算器
15.	[root@dyy ~]#

2)bc非交互式运算
将需要运算的表达式通过管道操作交给bc运算。注意,小数位的长度可采用scale=N限制,除此以外也受参与运算的数值的小数位影响。以计算小数12.34与5.678的四则运算为例,相关操作如下:

1.	[root@dyy ~]# echo 'scale=4;12.34+5.678' | bc
2.	18.018
3.	[root@dyy ~]# echo 'scale=4;12.34*5.678' | bc 
4.	70.0665
5.	[root@dyy ~]# echo 'scale=4;12.34/5.678' | bc 
6.	2.1733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值