算数运算符
常见算数运算符号
运算符 | 解释 | 例子 |
---|---|---|
+ | 求和 | 1+1=2 |
- | 求差 | 9-8=1 |
* | 求乘积 | 2*4=8 |
/ | 求商 | 8/2=4 |
% | 取余 | 9%2=1 |
** | 幂运算 | 3**3=27 |
+= | 将左边的数加上右边,然后再将和给左边的变量 | 3+=5等于8 |
-= | 将左边的数减去右边,将差赋给左边的变量 | 6-=5等于1 |
*= | 将左边的数乘以右边,乘积赋给左边 | 7*=7等于49 |
/= | 将左边的数除以右边,商赋给左边 | 12/=3等于4 |
%= | 左边的数对右边的数求模后,赋给左边 | 15%=4等于3 |
Linux Shell里有四种方式执行算数计算:
1.let
使用let命令,可以执行一个或多个算术表达方式,变量名无需使用$符号,如果表达式中有空格或者其他特殊字符,就得应用。
例如:
1.[root@centos8 learn]# x=10
2.[root@centos8 learn]# let x=x-1
3.[root@centos8 learn]# echo $x
4.9
5.[root@centos8 learn]# let x=x*10
6.[root@centos8 learn]# echo $x #因为x的值已经在第二行被重新定义为9
7.90
8.[root@centos8 learn]# let x=x**2
9.[root@centos8 learn]# echo $x #这里是因为x在第六行又被重新定义为90了,[关于变量概念不熟悉,到](https://www.cnblogs.com/hxlinux/p/12914354.html)
10.8100
2.expr
使用expr命令也可以计算表达式的值
例如:
#!/bin/bash
formule=`expr 99 - 100`
echo $formule
formule=`expr 99 + 100`
echo $formule
formule=`expr 2 \* 4`
echo $formule
formule=`expr 4 / 2`
echo $formule
输出结果为:
3.使用$((...))
写法比较*,可以松散也可以紧凑。
例如
#!/bin/bash
formult=\(((1+1))
echo "\)formult"
formult=\((( 9 - 7 ))
echo "\)formult"
formult=\((( 9 * 9 ))
echo "\)formult"
formult=\((( ( 2+1 ) * 6 ))
echo "\)formult"
输出结果为:
4.$[...]
语法和$((...))类似
#!/bin/bash
formult=$[1+1]
echo "$formult"
formult=$[7*7]
echo "$formult"
运行结果:
位运算符
位运算一般在用在整数间,他针对的不是整个整数,而是其二进制形式下某个或某些位也就是比特(bit)。
例如2>>1,表示将2的二进制(10)左移一位,变成100,也就是十进制的4
运算符 | 说明 | 例子 |
---|---|---|
<< | 左移 | 4<<2,4向左移2位,也就是16 |
>> | 右移 | 8>>2,将8向右移动2位,结果为2 |
& | 按位与 | 8&&4,8和4进行按位与运算 |
管道符 | 按位或 | 8管道符4,按位或计算,结果为12 |
~ | 按位非 | ~8,将8进行按位非计算,结果为-9 |
^ | 按位异或 | 10^6,将10和6按二进制位异或运算,结果为12 |
4<<2,就是把4转换成二进制(1000)后向左移动两位,得到100000转换成十进制就是16
8>>2,就是把8转换成二进制(10000)后向右移动两位,得到100转换成十进制就是2
用法和算数运算一样
#!/bin/bash
formult=$[ 8 >> 2 ]
echo "$formult"
formult=$[ 4 << 2 ]
echo "$formult"
自增/自减运算符
运算符 | 说明 |
---|---|
++x | 前置自增 |
--x | 前置自减 |
x++ | 后置自增 |
x-- | 后置自减 |
#!/bin/bash
x=10
x=$[ ++x ]
echo $x
x=$[ x+ (--x) ]
echo $x
x=$[ x-- ]
echo $x
输出结果:
进制的表示</center
0开头的数字表示八进制,0x开头的数字表示十六进制;或使用#号,2#表示二进制。8#表示八进制,16#表示十六进制。