一、算术运算符
1.1 基本运算符
运算符 | 说明 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
** | 幂次 |
- 算术运算符主要是加、减、乘、除、余、幂等常见的算术远算。
- Shell只支持整数运算,小数部分会舍去。除法运算,除数不能为0。
- 一般情况下,算术运行需要let命令或expr命令一起使用。
1.2. let用法介绍
let 命令是bash中用于计算的工具,用于执行一个或多个表达式。
变量计算中不需要加上$来表示变量。如果表达式中包含了空格或其它特殊字符,则必须引起来。
- 语法格式:
let <表达式>
用法一:
# let x=1+1
# echo $x
用法二:
# let "x = 1 + 1"
# echo $x
用法三:
# x=2
# let "x=x+1"
# echo $x
1.3. 算术运算符 – expr用法介绍
expr 命令是一个手工命令行计数器,用于在UNIX/Linux下求表达式变量的值,一般用于整数值,也可以用于字符串。
语法格式:
expr <表达式>
表达式说明:
用空格隔开每个项;
用反斜杠\放在shell特定的字符前面;
对包含空格和其它特殊字符的字符串要用引号括起来。
注意:使用乘号*时,必须用反斜线转义其特定含义。
1.4. 算术运算符 – 基本运算符示例
加、减、乘、除,取余、幂次运算符示例如下:
注意:对幂次方运算,expr不支持。可以通过man expr进行查询,但是let支持幂次方的运算。
1.5. 算术运算符 – 复合运算符
运算符 | 说明 |
+= | 加等 |
-= | 减等 |
*= | 乘等 |
/= | 除等 |
%= | 余等 |
- 算术复合运算符主要是加等、减等、乘等、除等、余等复合运算。
- Shell只支持整数运算,小数部分会舍去。除法运算,除数不能为0。
- 一般情况下,算术运行需要let命令一起使用。
1.6 算术运算符 –复合运算符示例
加等、减等、乘等、除等,余等运算符示例如下:
1.7 算术运算符 – 算术扩展
算术扩展是shell提供的整数变量的运算机制,是shell的内建命令之一。其基本语法如下:
$((算术表达式))
二、位运算符
2.1 左移、右移
运算符 | 说明 |
<< | 左移 |
>> | 右移 |
- 位运算符是基于内存中二进制数据的运算,也就是基于位的运算。常见的位运算有左移、右移、按位与、按位或、按位异或、按位非等运算。
- 位运算的左移、右移元素其实就是整数在内存中的“左右移动”。
左移举例说明:
右移举例说明:
2.2 按位与、按位或
运算符 | 说明 |
& | 按位与,是将两个整数写成二进制的形式,然后同位置相比较,只有当对应的二进制值都为1时,结果才为1。 |
| | 按位或,是将两个整数写成二进制的形式,然后同位置相比较,只要对应的位置有1,结果就为1。 |
按位与举例说明:
按位或举例说明:
2.3 按位非、按位异或
运算符 | 说明 |
~ | 按位非,是将一个数字的二进制数字取反所得到的结果,计算有点麻烦,有个快捷的计算公式:~a的值为-(a+1)。 |
^ | 按位异或,是将两个整数写成二进制的形式,然后同位置相比较,只要对应的位置同为0或同为1,结果就为0,否则为1。 |
按位非举例说明:
按位异或举例说明:
三、自增、自减运算符
运算符 | 对变量i的操作 | 说明 |
++ | ++i | 前置自增 |
--i | 前置自减 | |
-- | i++ | 后置自增 |
i-- | 后置自减 |
- 前置自增或前置自减,会首先修改变量的值,然后再将变量的值传递出去。
- 后置自增或后置自减,会首先将变量的值传递出去,然后再修改变量的值。
- 自增、自减符,操作对象只能是变量,不能是常量或表达式。
自增举例说明:
自减举例说明:
四、数字常量进制
一个前缀为0的数字是八进制;一个前缀为0x的数字是十六进制数。一个数用内嵌的#来求值,则看成BASE#NUMBER(2-64),NUMBER必须使用在BASE范围内的符号。
备注:除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数。