shell 算术运算

在上一节的if条件判断中,我们使用了一个 (( $age < 30 )) 比较表达式,用来作为if是否执行的条件,在shell中,如果你想像C语言中那样,进行算术运算:比如加减乘除、条件判断(大于、小于、等于)、与或非逻辑运算,要使用下面的格式:

((算术表达式))
(( $age < 30 ))

shell看到你的算术表达式使用了双括号包起来,就知道这里面是一个算术表达式,否则它就会认为这是个命令,遇到 $age < 30这样的字符串,会把 < 解析成:重定向符号,而不是 比较运算符:小于

shell的算术运算符、优先级、结合性、以及数值格式基本上和C语言是一样的。如果你对C语言很熟悉,基本上就可以平滑地切换过来,在C语言中使用的运算符在shell中都可以使用。唯一注意的地方就是:在shell中,进行算术运算,要记得使用双括号(())包起来。

shell运算符按照优先级从高到低的顺序排列如下所示:

shell运算符 说明
i++ i— 后增运算符,后减运算符
++i —i 先增运算符,先减运算符
- + 单目负号,正号
! ~ 逻辑取反,按位取反
** 指数
* / % 乘,除,求余
+ - 加法运算符,减法运算符
<< >> 按位左移,按位右移
<= >= < > 比较运算符
== != 相等,不等比较运算符
& 按位与运算
^ 按位异或运算
\ 按位或运算
&& 逻辑与运算
\ \ 逻辑或运算
condtion? expr1 : expr2 条件运算符
= += &= <<= >>= 赋值运算符
expr1, expr2 逗号运算

在算术表达式中,以0开头的常量是八进制数,以0x或0X开头的表示十六进制数,默认是10进制。算术表达式除了作为一般的数据处理外,还可以作为条件分支、循环程序的判断表达式,算术表达式的运算结果非零,则说明这个表达式成立,返回结果为真。

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客