25. ((表达式))
(( ))
语法告诉 bash 将内容计算为表达式。 这很像let
。
以下两个示例的工作原理完全相同。
let total=total+3
((total=total+3))
但是,在(( ))
内可以有空格:
$ (( total = total + 3 ))
$ echo $total
21
let
命令中的空格会将行分隔成多个表达式:
$ let total = total + 1
-bash: let: =: syntax error: operand expected (error token is "=")
由于(( ))
支持空格,因此不能在一行中使用多个表达式:
$ let total=total+1 sum=sum+2
$ ((total=total+1 sum=sum+2))
-bash: ((: total=total+1 sum=sum+2: syntax error in expression (error token is "sum=sum+2")
(( ))
允许您使用前后递增/递减:
((total=0))
((total=total+3))
((total++))
((total--))
((++total))
您也可以编写((total=total+3))
,如下所示。 两者是相同的。
((total=total+3))
total=$((total+3))
(( ))
对于 if
语句部分中解释的条件比较很有帮助。