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三剑客