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 语句部分中解释的条件比较很有帮助。