算术表达式
算术表达式语法:((...))
,在 Bash 中,该表达式只能进行整数运算,返回的结果也是整数。
- 表达式不会返回运算结果的的值,如需取表达式的运算结果,需使用语法:
$((...))
1 | ((1+2)) |
((...))
语法支持的运算符如下:
1 | + // 加 |
$(())
内部可以嵌套,也可以增加括号改变运算顺序,((...))
内部不能嵌套
1 | sum=$(((1+2)*3+4)) |
$(())
内部的变量前不需要加$
,内部的字符串会当作变量解析
1 | varname=$sum |
- 旧的语法:
$[...]
数值进制
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 | let a=1+2 |