Forgetful Alann

In youth we learn, in age we understand.

0%

算术运算

算术表达式


算术表达式语法:((...)),在 Bash 中,该表达式只能进行整数运算,返回的结果也是整数

  • 表达式不会返回运算结果的的值,如需取表达式的运算结果,需使用语法:$((...))
1
2
3
4
5
6
7
((1+2))
# 其中的空格会被忽略
((1 + 2))
# 可直接在其中进行变量赋值
((sum = 1 + 2))
# 等价于
sum=$((1 + 2))
  • ((...)) 语法支持的运算符如下:
1
2
3
4
5
6
7
8
+	// 加
- // 减
* // 乘
/ // 除
% // 余数
** // 指数
++ // 自增
-- // 自减
  • $(()) 内部可以嵌套,也可以增加括号改变运算顺序,((...)) 内部不能嵌套
1
sum=$(((1+2)*3+4))
  • $(()) 内部的变量前不需要加 $,内部的字符串会当作变量解析
1
2
3
4
5
6
varname=$sum
echo $(($varname + 1))
# 等价于
echo $((varname + 1))
# 等价于
echo $((sum + 1))
  • 旧的语法: $[...]

数值进制


Bash 中数字默认为是十进制,可以使用特定语法表示其它进制:

  • num: 十进制
  • 0num: 八进制
  • 0xnum: 十六进制
  • base#num: 任意指定进制, base 表示进制的数,例如 2进制:2#101

位运算


$((...)) 支持二进制位运算, ((...)) 也同样支持:

  • <<: 位左移
  • >>:位右移
  • &: 与 运算
  • |: 或 运算
  • ~: 否 运算
  • ^:异或 运算

逻辑运算


$((...))((...)) 支持以下的逻辑运算符,逻辑运算 true 返回 1, false 返回 0:

  • < : 小于

  • > : 大于

  • <= : 小于等于

  • >= : 大于等于

  • == : 等于

  • != : 不等于

  • && : 逻辑与

  • || : 逻辑或

  • ! : 逻辑否

  • expr1? expr2 : expr3 : 三元运算

赋值运算


((...)), $((...))中支持的赋值运算:+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=.

求值运算


$((...))中的运算可以使用逗号 , 隔开,这个逗号叫做求值运算符,使用求值运算符分隔的运算,会先顺序执行,然后返回最后一个运算的结果

1
echo $((1 + 2, 3 +  4)) // 7

expr 命令


使用 expr 命令可以直接进行整数算术运算,注意算术中数字与算术符号要用空格隔开

1
expr 1 + 2

let 命令


let 命令用于将算术运算结果赋值给一个变量:

1
2
3
4
5
let a=1+2
# 加空格
let "a = 1 + 2"
# 多个
let "a = 1 + 2" "b = a + 1"