Shell数学计算(算术运算,加减乘除运算)

12个月前 (04-27)
如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示。

Shell 算术运算符一览表

算术运算符

说明/含义

+、-

加法(或正号)、减法(或负号)

*、/、%

乘法、除法、取余(取模)

**

幂运算

++、--

自增和自减,可以放在变量的前面也可以放在变量的后面

!、&&、||

逻辑非(取反)、逻辑与(and)、逻辑或(or)

<、<=、>、>=

比较符号(小于、小于等于、大于、大于等于)

==、!=、=

比较符号(相等、不相等;对于字符串,= 也可以表示相当于)

<<、>>

向左移位、向右移位

~、|、 &、^

按位取反、按位或、按位与、按位异或

=、+=、-=、*=、/=、%=

赋值运算符,例如 a+=1 相当于 a=a+1,a-=1 相当于 a=a-1


但是,Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算令,这让初学者感觉很困惑,也让有经验的程序员感觉很奇葩。

下面我们先来看一个反面的例子:

[c.biancheng网站站点" rel="nofollow" /> 这是因为,在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。

换句话说,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。

这一点我们已在《Shell变量》中提到,读者可以猛击链接回忆。

数学计算令

要想让数学计算发挥作用,必须使用数学计算令,Shell 中常用的数学计算令如下表所示。

Shell 中常用的六种数学计算方式

运算操作符/运算令

说明

(( ))

用于整数运算,效率很高,使用

let

用于整数运算,和 (()) 类似。

$[]

用于整数运算,不如 (()) 灵活。

expr

可用于整数运算,也可以处理字符串。比较麻烦,需要注意各种细节,不使用。

bc

Linux下的一个计算器程序,可以处理整数和小数。Shell 本身只支持整数运算,想计算小数就得使用 bc 这个外部的计算器。

declare -i

将变量定义为整数,然后再进行数学运算时就不会被当做字符串了。功能有限,仅支持最基本的数学运算(加减乘除和取余),不支持逻辑运算、自增自减等,所以在实际开发中很少使用。

如果大家时间有限,只学习 (()) 和 bc 即可,不用学习其它的了:(()) 可以用于整数计算,bc 可以小数计算。

在接下来的章节中,我们将逐一为大家讲解 Shell 中的各种运算符号及运算令。