看起来$[expr]
执行算术扩展就像$((expr))
.但我$[
在 bash 手册中找不到任何提及。该命令没有给出任何结果:
gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['
这个操作符是什么?它的行为在任何地方都标准化了吗?
我的 bash 版本:GNU bash,版本 3.2.51(1)-release (x86_64-apple-darwin13)
答案1
在 GNU bash 邮件列表上的一个线程中,它表示该$[
语法是早期语法,已被弃用$((
,因为后者已被 Korn shell 使用。
根据这个网站,bash 3.2.48 的手册包含对$[
语法的引用。因此推测该引用已在 3.2.51 中删除。
答案2
你可以找到旧的 bash 源代码在这里。特别是我下载了bash-1.14.7.tar.gz。在 中documentation/bash.txt
你会发现:
算术扩展
算术展开允许计算算术表达式并替换结果。算术扩展有两种格式:
$[expression] $((expression))
对的引用$[
已从doc/bash.html
bash-doc-2.0.tar.gz 下载该NEWS
文件提到:
$[...]
不再支持算术扩展语法,转而支持$((...))
.
$((...))
也是标准语法用于算术扩展,但可能晚于原始 Bash 实现才添加到标准中。
然而,$[...]
它似乎在 Bash 5.0 中仍然有效,所以它并没有被完全删除。