双括号(( ))专用于整数算术与逻辑判断,语法近C、变量免$、返回非零为真;支持四则、自增、关系、逻辑及位运算;区别于[ ]和[[ ]](用于字符串/文件测试),不支持字符串比较。

Linux 中用双括号 (( )) 做算术条件判断,核心优势是简洁、高效、语法接近 C 语言,且变量不用加 $ 符号。
直接用于 if/while 等结构的条件测试
双括号专为整数运算和逻辑判断设计,返回值遵循“非零为真、零为假”规则,天然适配 shell 的条件语句:
if (( a > b )); then echo "a 更大"; fiwhile (( iuntil (( count == 0 )); do echo "倒计时: $count"; ((count--)); done
注意:括号内所有变量名可省略 $,比如 a 和 $a 效果相同;但若变量未定义,默认按 0 处理,不会报错。
支持复合表达式与多操作符组合
一个 (( )) 内可写多个算术表达式,用逗号分隔,从左到右依次执行:
(( i=0, j=10, i —— 赋值 + 比较一次完成-
if (( x += 2, y *= 3, x > y )); then ... fi—— 连续更新并判断 - 支持三目运算:
result=$(( a > b ? a : b ))(这是$(( ))形式,用于赋值)
常用算术与逻辑运算符
括号内支持完整 C 风格运算,包括:
- 四则运算:
+-*/% - 自增自减:
i++--ja+=2 - 关系比较:
==!=<><=>= - 逻辑运算:
&&||!(优先级高于关系运算符) - 位运算:
&|^<<>>
例如:if (( (x & 1) == 0 && x > 10 )); then echo "x 是大于10的偶数"; fi
和单中括号 [ ]、双中括号 [[ ]] 的关键区别
避免混淆使用场景:
-
[ ]和[[ ]]主要用于字符串、文件、通用条件测试;[[ ]]支持</>字典序比较,但不处理数值大小 -
(( ))只做整数算术和逻辑判断,不支持字符串比较或文件测试 - 数值比较别用
[ 5 -gt 3 ]这类老式写法,除非要兼容 POSIX shell;bash/zsh 下(( 5 > 3 ))更清晰安全 - 若需混合类型判断(如字符串是否为空 + 数值是否大于0),应拆开组合:
[[ -n "$str" ]] && (( num > 0 ))


















