在 bash 中,美元符号后跟方括号 $[...] 是什么意思?

Ama*_*ius 42 bash arithmetic

似乎$[expr]执行算术扩展就像$((expr)). 但是我$[在 bash 手册中找不到任何提及。此命令没有给出任何结果:

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
Run Code Online (Sandbox Code Playgroud)

这个运算符是什么,它的行为在任何地方都标准化了?

我的 bash 版本:GNU bash,版本 3.2.51(1)-release (x86_64-apple-darwin13)

Ama*_*ius 30

在 GNU bash 邮件列表上的一个线程中,它说该$[语法是一种早期的语法,已被弃用而支持$((,因为 Korn shell 已经使用了后者。

根据此站点,bash 3.2.48 的手册包含对$[语法的引用。所以大概这个引用已经在 3.2.51 中删除了。


Dig*_*uma 27

你可以在这里找到旧的 bash 源代码。特别是我下载了bash-1.14.7.ta​​r.gz。在中documentation/bash.txt你会发现:

算术展开

算术扩展允许对算术表达式求值并替换结果。算术扩展有两种格式:

     $[expression]

     $((expression))
Run Code Online (Sandbox Code Playgroud)

该引用$[都消失在doc/bash.html庆典-DOC-2.0.tar.gz下载NEWS文件提到:

$[...]算术扩展语法不再被支持,赞成$((...))

$((...))也是算术扩展的标准语法,但可能在原始 Bash 实现之后添加到标准中。

但是,$[...]在 Bash 5.0 中似乎仍然可以工作,所以它没有被完全删除。