• 本页内容

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