(())双圆括号与let命令很相似,((......))结构允许算术扩展和赋值,其也被认为是在bash中使用c语言风格变量操作的一种处理机制。

样例:

[root@kibana ~]# cat c-type.sh 
#!/bin/bash

(( a = 24 ))
#C语言风格的变量赋值,=两边允许有空格
echo "a (initial value) = $a"

(( a++ ))
#C语言风格的后置自加
echo "a (after a++) = $a"
(( a-- ))
#C语言风格的后置自减
echo "a (after a--) = $a"

(( ++a ))
#C语言风格的前置自加
echo "a (after ++a) = $a"
(( --a ))
#C语言风格的前置自加
echo "a (after --a) = $a"

echo
#注意:就像在C语言中一样,前置或后置自减操作会产生一些不同的副作用
n=1; let --n && echo "True" || echo "False"
n=1; let n-- && echo "True" || echo "False"
echo

(( t = a<40?7:11 ))
echo "If a < 40, then t = 7, else t = 11."
echo "t = $t"
echo

exit 0
[root@kibana ~]# sh c-type.sh 
a (initial value) = 24
a (after a++) = 25
a (after a--) = 24
a (after ++a) = 25
a (after --a) = 24

False
True

If a < 40, then t = 7, else t = 11.
t = 7

[root@kibana ~]#