shell中的数学运算

shell中数学运算分为两类:逻辑运算和数值运算。
有以下两种方式调用数学计算:

expr expression
result=$[expression]
  1. 逻辑运算:& | < > = != <= >=
    这和在其他的语言中的逻辑运算是一样的,为真则返回1,为假则返回0
expr 5 < 7

会报错,因为bash会将<视为重定向符号,因此需要转义

expr 5 \< 7

返回1
也可以

result=$[5 < 7]

这里就可以不使用转义符号
在进行等于比较时两种方式具有较大的不同:

#这里加上空格并不是必须的
result=${5 == 7]
#注意等号前后要加空格 不然会认为是字符串连接
expr 5 = 5 

2.数值运算

#同理,使用expr进行数值运算,也需要加上转义符号
expr 1 \+ 2
#因此大多数情况下是运用$[ ]
result=$[1 + 2]

但是整型数据运算结果只能得到整型结果,小数会被截断,因此需要进行浮点运算时要使用内建计算器bc。bc能够识别整型,浮点型,变量,注释,表达式,编程语句以及函数。

不想看到欢迎条 使用-q参数
bc -q
#可以进行整型计算
1+2
3
#默认scale是0,即保留0位小数
1.0/2
0
#将scale改为2,计算结果既可以得到两位小数
scale=2
1.0/2
.50
100/3
33.33
#按quit退出

也可以使用变量(退出bc时scale重新设置为0):

bc -q
num1=1
num2=2
num1+num2
3
num1/num2
0
scale=2
num1/num2
.50
quit

在脚本中进行简单的浮点运算也可以通过管道命令:

#通过反引号得到命令返回值
result=`echo "scale=2;1/2" | bc`
echo $result
.50

进行复杂点的运算可以这样(输入重定向的使用):

num1=12.21
num2=21.12
result=`bc << EOF
> scale=2
> a = $num1 * $num2
> b = $num1 / $num2
> a+b
> EOF
> `
echo $result
258.44

至此,shell中的数学运算就没了,虽然计算功能还是很弱,但是也足够日常的使用了。毕竟平时你也不用泰勒展开,傅里叶变换,拉普拉斯变换的,对吧^_-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值