在bash中,美元符号和方括号$ […]意味着什么?


34

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

gunzip -c /usr/share/man/man1/bash.1.gz | grep -E '\$\['

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

我的bash版本:GNU bash版本3.2.51(1)-发行版(x86_64-apple-darwin13)


3
要明确回答有关标准的问题:(过时的)bash特定$[...]语法是非标准的。的$((...))(即源于ksh)是POSIX标准。
Janis 2015年

2
使用Ubuntu 11.04 :man bash | grep -E '\$\['。输出:旧格式$ [expression]已弃用,并将在以后的版本中删除
Cyrus

手册页可能包含_t_h_i_s之类的内容(然后由man实用程序进行解释,以便出现不同的外观),因此,如果grep发生这种情况,则您的grep可能会失败,因为您搜索的内容应该像这样被记录
Olivier Dulac

Answers:


19

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

算术扩展

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

     $[expression]

     $((expression))

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

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

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

但是,$[...]它似乎仍然可以在Bash 5.0中使用,因此尚未完全删除。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.