$[a-b] 和 $((a-b)) 在 bash 中的区别

difference between $[a-b] and $((a-b)) in bash

我不认识这个运算符 $[],也找不到相关信息。但是我知道接下来的两个代码给出相同的输出

a=4
b=1
echo $[a-b] # => 3

a=4
b=1
echo $((a-b)) # => 3

那么 $[] 运算符是做什么用的,和 $(()) 有什么区别?

在我的 zsh shell 提示符中,当我打开其中任何一个但没有关闭它们时,我写了 mathsubst

阅读 man bash 说旧格式 $[expression] 已弃用并将被删除。否则它们应该是等价的。

Arithmetic expansion allows the evaluation of an arithmetic expression and the substitution of the result. The format for arithmetic expansion is:

          $((expression))

The old format $[expression] is deprecated and will be removed in upcoming versions of bash.