Shell中的算术运算

Shell允许在某些情况下对算术表达式进行求值,比如:let和declare 内置命令,(( ))复合命令和算术扩展。求值以固定宽度的整数进行,不检查溢出。

1 运算表达式

运算表达式

 (1) expr 变量1 运算符 变量2  [运算符 变量3]...
 (2) let var=算术表达式
 (3) ((var=算术表达式)),和上一个等价
 (4) var=$[算术表达式]
 (5) var=$((算术表达式))
 (6) var=$(expr arg1 arg2 arg3 ...)
 (7) var= `expr arg1 arg2 arg3 ...`
 (8) echo '算术表达式' | bc

运算符:

加法 +
减法 -
乘法 \ *
除法 /
取余 (取模)%

运算法则:

加法: num1 + num2
减法:num1 - num2
乘法:num1 \ * num2
整除:num1 / num2
取余(求模):num1 % num2 (求 num1 除以 num2 的余数)

2 运算演示

2.1 expr

expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。

变量和运算符之间,要用空格隔开。
用反斜杠 \ 放在 shell 特定的字符前面;
对包含空格和其他特殊字符的字符串要用引号括起来

示例

 [root@localhost ~]# expr 4 + 3
 7
 [root@localhost ~]# expr 4 - 3
 1
 [root@localhost ~]# expr 4 * 3     //乘号前要加反斜杠
 12
 [root@localhost ~]# expr 10 / 2
 5
 [root@localhost ~]# expr 10 % 3     //10除以3取余数
 1
 [root@localhost ~]# expr 1 + 2 \* 3    //先乘除,再加减
 7

2.2 let 和 (( ))

let var=算术表达式 和 ((var=算术表达式)) 效果等同。

两者都不返回结果,需要借助echo命令。

示例

 [root@localhost ~]# let y=1+2
 [root@localhost ~]# echo $y
 3
 [root@localhost ~]# ((z=1+2))
 [root@localhost ~]# echo $z
 3

2.3 [ ] 和 [ ]和 [](( ))

$[ ] 和 $(( ))效果相同,且都支持对变量进行运算。

 [root@localhost ~]# echo $[10+3]
 13
 [root@localhost ~]# echo $[10-3]
 7
 [root@localhost ~]# echo $[10*3]
 30
 [root@localhost ~]# echo $[10/3]
 3
 [root@localhost ~]# echo $[10%3]
 1
 [root@localhost ~]# a=2
 [root@localhost ~]# b=5
 [root@localhost ~]# echo $[a+b]
 7
 [root@localhost ~]# echo $[a*b]
 10
 [root@localhost ~]# echo $((a+b))
 7
 [root@localhost ~]# echo $((a*b))
 10

3 小数运算(浮点数运算)

3.1 使用bc计算器

Bash内置了对整数运算的支持,但是并不支持浮点运算,而 bc 计算器可以很方便的进行浮点运算。

支持交互式和非交互式两种方式。
使用scale=n可以指定精度,即小数点后的位数。要写在算术表达式之前。
非交互式运算,使用 echo “算术表达式” | bc。 多个算术表达式之间用分号隔开,例如:echo '1+1;2+2" | bc。

示例

 [root@localhost ~]# 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'.
 1.1*1.1            //输入1.1*1.1,敲回车
 1.2                //返回结果
 3.3+3.3            
 6.6
 scale=2           //指定精度,小数点后显示2位
 1.1*1.1           //输入1.1*1.1,敲回车
 1.21              //显示2位小数
 quit              //退出计算器
 [root@localhost ~]#

3.2 使用awk命令

使用awk进行浮点数的运算,运算结果最多显示6个有效数字。

格式:awk “BEGIN{print 算术表达式}”

示例

 [root@localhost ~]# awk "BEGIN{print 6.5+3.4}"
 9.9
 [root@localhost ~]# awk "BEGIN{print 6.5-3.4}"
 3.1
 [root@localhost ~]# awk "BEGIN{print 6.5*3.4}"
 22.1
 [root@localhost ~]# awk "BEGIN{print 6.5/3.4}"
 1.91176
 [root@localhost ~]# awk "BEGIN{print (6.5-3.4)*7}"     //混合运算
 21.7
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值