似乎$[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.tar.gz。在中documentation/bash.txt你会发现:
算术展开
算术扩展允许对算术表达式求值并替换结果。算术扩展有两种格式:
Run Code Online (Sandbox Code Playgroud)$[expression] $((expression))
该引用$[都消失在doc/bash.html从庆典-DOC-2.0.tar.gz下载和NEWS文件提到:
该
$[...]算术扩展语法不再被支持,赞成$((...))。
$((...))也是算术扩展的标准语法,但可能在原始 Bash 实现之后添加到标准中。
但是,$[...]在 Bash 5.0 中似乎仍然可以工作,所以它没有被完全删除。