shell中的括号
双括号 “(( ))”
双括号中除了标准运算符之外其他运算符如下表:
符号 | 功能 |
---|---|
var++ | 后增 |
++var | 先增 |
var– | 后减 |
–var | 先减 |
! | 逻辑取反 |
~ | 位求反 |
** | 幂运算 |
<< | 左移位 |
>> | 右以为 |
& | 位和 |
| | 位或 |
&& | 逻辑和 |
|| | 逻辑或 |
实例:
num=10
if ((++num>10))
then
echo $num
((num=num++))
echo $num
((num=++num))
echo $num
fi
#the result:
#>11 #++num先增,num=11,表达式结果为11,满足if条件,输出11
#>11 #num++后增,表达式为11,num=12,表达式的值赋值给num,输出11
#>12 #++num先增,num=12,表达式为12,表达式赋值给num,输出12
注:
- 双括号中变量取值不需要加“$”
- 大于号、小于号不需要转义
- 运算符两边不需要加空格
双中括号 “[[ ]]”
[[ ]] 是[ ]的扩展,除了支持[ ]的功能外,还支持:
- &&,|| 逻辑运算 — [[ command1 && command2 ]]
- 对于字符串,[[ ]]提供了模式匹配,可以通过正则匹配字符串的值
此外:
- [[ ]]两边需要空格,运算符两边也需要空格
- 大于号,小于号不需要转义