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

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

看起来$[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.ta​​r.gz。在 中documentation/bash.txt你会发现:

算术扩展

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

     $[expression]

     $((expression))

对的引用$[已从doc/bash.htmlbash-doc-2.0.tar.gz 下载NEWS文件提到:

$[...]不再支持算术扩展语法,转而支持$((...)).

$((...))也是标准语法用于算术扩展,但可能晚于原始 Bash 实现才添加到标准中。

然而,$[...]它似乎在 Bash 5.0 中仍然有效,所以它并没有被完全删除。

相关内容