shell-运算(加减乘除)

数学上的加减乘除运算,在shell脚本中也能运行,shell一共提供三个方法来执行数学运算,分别是expr,方括号模式和双括号模式

expr方法(这个方法不推荐使用,了解就行)

例如输入命令:

expr 2 - 5

输出结果为:

-3

注意,上面的减号左右都有空格,没有的话会报错的。

但是expr有一个缺点导致它并不常用,expr不会自动去转义一些特殊的符号,比如乘法符号*,输入:

expr 3 * 5

输出:

expr: 语法错误

加上反斜线,可以解决这个问题,输入:

expr 3 \\* 5

输出结果为:

15

expr用起来实在是太麻烦了。

方括号

通过美元符号加中括号,把数学表达书框起来的形式,也能够完成数学运算,并且这种方式不需要转义,使用更加方便,建议以后使用这个方式,例如输入:

#!/bin/bash
var1=3
var2=$[3 + 3]
var3=$[$var1 + $var2]
var4=$[$var3 * 2]
var5=$[2 * ($var3 - $var4)]
echo "var1=$var1,var2=$var2,var3=$var3,var4=$var4,var5=$var5"
 
var6=$[100 / 30]
echo "var6=$var6"

输出:

var1=3,var2=6,var3=9,var4=18,var5=-18
var6=3

可以看出,var1~var5都计算没问题,但是var6结果并不精确。这是因为shell只能支持整数运算。如果想要在shell中使用小数运算的话可以使用bc命令或者awk命令。

用方括号的方式还有一个好处,就是在加减乘除符号左右两侧留不留空格,都能正常执行。

bc命令用法如下,

输入

echo "3/4"|bc -l

输出

.75000000000000000000

有的linux版本不装bc命令,我就遇到过,使用awk命令也能计算小数的运算。

输入:

echo 5 3|awk '{print $1/$2}'

输出

1.66667

双小括号

这种方式最好用,也不用考虑多加个空格的问题,比如把上面的脚本改为:

#!/bin/bash
var1=3
var2=$((3 + 3))
var3=$(($var1 + $var2))
var4=$(($var3 * 2))
var5=$((2 * ($var3 - $var4)))
echo "var1=$var1,var2=$var2,var3=$var3,var4=$var4,var5=$var5"
 
var6=$((100 / 30))
echo "var6=$var6"

输出结果为:

var1=3,var2=6,var3=9,var4=18,var5=-18
var6=3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日实现财富自由-2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值