shell从入门到精通(11)Shell算术运算
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell从入门到精通(11)Shell算术运算相关的知识,希望对你有一定的参考价值。
如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示。
算术运算符 | 说明/含义 |
---|---|
+、- | 加法(或正号)、减法(或负号) |
*、/、% | 乘法、除法、取余(取模) |
** | 幂运算 |
++、– | 自增和自减,可以放在变量的前面也可以放在变量的后面 |
!、&&、|| | 逻辑非(取反)、逻辑与(and)、逻辑或(or) |
<、<=、>、>= | 比较符号(小于、小于等于、大于、大于等于) |
==、!=、= | 比较符号(相等、不相等;对于字符串,= 也可以表示相当于) |
<<、>> | 向左移位、向右移位 |
~、|、 &、^ | 按位取反、按位或、按位与、按位异或 |
=、+=、-=、*=、/=、%= | 赋值运算符,例如 a+=1 相当于 a=a+1,a-=1 相当于 a=a-1但是,Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令,这让初学者感觉很困惑,也让有经验的程序员感觉很奇葩。 |
下面我们先来看一个反面的例子:
$ a=2+8 130
$ echo $a
2+8
$ a=2
$ b=3
$ echo $a + $b
2 + 3
从上面的运算结果可以看出,默认情况下,Shell 不会直接进行算术运算,而是把+
两边的数据(数值或者变量)当做字符串,把+
当做字符串连接符,最终的结果是把两个字符串拼接在一起形成一个新的字符串。
这是因为,在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
换句话说,Bash shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串,这一点和大部分的编程语言不同。
shell提供了很多方法,我记住最简单有用的一种即可,$((算术表达式))。
$ echo $((1+2)) 1
3
$ a=1
$ b=2
$ echo $(($a+$b))
3
括号内的表达式随便你写,基本上符合C语言表达式的写法都可以。
例如,除了可以是算术运算表达式,还可以是逻辑运算表达式:
$ echo $((1+2 && 0))
0
$ echo $((1+2 && 1))
1
以上是关于shell从入门到精通(11)Shell算术运算的主要内容,如果未能解决你的问题,请参考以下文章