在编写bash脚本的时候,经常会遇到需要计算数学结果的情况,比如计算剩余磁盘空间、文件大小、密码过期时间、主机数量等,网络带宽等。今天我们将介绍在bash中使用运算符进行算术运算。一般来说,bash中的算术运算符包括以下几种:运算符说明+加法运算-减法运算*乘法运算/整数除法%余数**幂运算bash脚本中进行加减运算为了演示,我们创建一个A名为addition.sh的脚本文件将两个文件的大小(以字节为单位)相加并输出。为此,您需要了解bash脚本中的参数,以及cut和du命令。du命令计算文件的大小,其输出包括两列,即文件大小和文件名。cut命令取出第一列(即文件大小);du命令的输出被传递给cut命令。脚本如下所示:#!/bin/bashfs1=$(du-b$1fs2=$(du-b$2echo"Filesizeof$1is:$fs1"echo"Filesizeof$2is:$fs2"total=$(($fs1+$fs2))echo"Totalsizeis:$total"运行上面的脚本时,需要给两个文件名作为参数,比如我们将文件/etc/passwd和/etc/组作为参数运行脚本:$./addition.sh/etc/passwd/etc/group/etc/passwd的文件大小为:2795/etc/group的文件大小为:1065总大小为:3860inaddition.sh脚本其中最重要的一行:total=$(($fs1+$fs2))上面的代码使用运算符+将$fs1和$fs2两个数相加,这里需要注意的是算术表达式需要用双括号括起来:$((arithmetic-expression))您还可以使用减号运算符-进行减法。例如下面的代码,结果会是7:sub=$((10-3))进行乘除我们创建一个名为giga2mega.sh的脚本文件,用于将GB转换为MB,如下:#!/bin/bashGIGA=$1MEGA=$(($GIGAecho"$GIGAGB等于$MEGA让我们执行它看看有多少MB等于4GB:$./giga2mega.sh44GB等于4096MB这里,我们使用乘法(*)运算符将GB数乘以1024得到等效的兆字节数:MEGA=$(($GIGA*1024))同理,将GB转换为KB同理:KILO=$(($GIGA*1024*1024))除法运算符/用于对两个数进行除法,例如下面的例子:div=$((20/4))注意这是整数除法,所有小数部分都会丢失。例如,要计算5除以2,结果为2:$div=$((5/2))$echo$div2要实际计算两个数相除的结果(得到小数结果),你可以使用bc命令,比如计算5除以2,可以重新参考如下代码:echo"5/2"2.50000000000000000000此外,还可以在其他算术运算符中使用bc命令:使用幂和余数(取模)接下来,我们使用取幂运算符**进行取幂。首先创建一个名为power.sh的脚本,接受两个数作为参数:a和b,然后计算a的b次方,如下代码所示:#!/bin/basha=$1b=$2result=$((a**b))echo"$1^$2=$result"让我们运行它:$./power.sh232^3=8$./power.sh323^2=9$./power.sh525^2=25$./power.sh424^2=16使用运算符%计算余数如下:rem=$((17%5))结果为2,你可以试试出去。
