shell-运算符

算数运算符

常见算数运算符号

运算符 解释 例子
+ 求和 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

输出结果为:
shell-运算符

3.使用$((...))

写法比较*,可以松散也可以紧凑。
例如
#!/bin/bash
formult=\(((1+1)) echo "\)formult"
formult=\((( 9 - 7 )) echo "\)formult"
formult=\((( 9 * 9 )) echo "\)formult"
formult=\((( ( 2+1 ) * 6 )) echo "\)formult"

输出结果为:
shell-运算符

4.$[...]

语法和$((...))类似

  #!/bin/bash
  formult=$[1+1]
  echo "$formult"
  formult=$[7*7]
  echo "$formult"

运行结果:
shell-运算符

位运算符

位运算一般在用在整数间,他针对的不是整个整数,而是其二进制形式下某个或某些位也就是比特(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
shell-运算符

8>>2,就是把8转换成二进制(10000)后向右移动两位,得到100转换成十进制就是2
shell-运算符

用法和算数运算一样

  #!/bin/bash
  formult=$[ 8 >> 2 ]
  echo "$formult"
  formult=$[ 4 << 2 ]
  echo "$formult"

shell-运算符

自增/自减运算符

运算符 说明
++x 前置自增
--x 前置自减
x++ 后置自增
x-- 后置自减
  #!/bin/bash
  x=10
  x=$[ ++x ]
  echo $x
  x=$[ x+ (--x) ]
  echo $x
  x=$[ x-- ]
  echo $x

输出结果:
shell-运算符

进制的表示</center

0开头的数字表示八进制,0x开头的数字表示十六进制;或使用#号,2#表示二进制。8#表示八进制,16#表示十六进制。
shell-运算符

shell-运算符

上一篇:Linux命令(14)which命令


下一篇:ThreadPoolExecutor 中为什么WorkQueue会在corePoolSize满了之后入队