32

我刚刚偶然发现了 bash 语法:

foo=42
bar=$[foo+1] # evaluates an arithmetic expression

当我为此搜索时,我发现 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05

3.4.6。算术扩展

算术扩展允许对算术表达式求值并替换结果。算术展开的格式为:

$(( EXPRESSION )) 

...

Bash 用户应尽可能尝试使用带方括号的语法:

$[ EXPRESSION ] 

但是,这只会计算 EXPRESSION 的结果,不做任何测试......

在我的 bash 手册页中,我只能找到如下$(( EXPRESSION ))形式:

foo=42
bar=$((foo+1)) # evaluates an arithmetic expression

那么,哪些测试没有被执行$[...]$((...))或者$[...]只是一个遗留版本$((...))

4

2 回答 2

38

bash v3.2.48 的手册页说:

[...]算术扩展的格式是:

     $((expression))

格式 $[expression] 已弃用,将在即将发布的 bash 版本中删除。

$[...]不应再使用的旧语法也是如此。

于 2010-03-10T09:33:54.790 回答
13
于 2012-08-11T03:06:55.650 回答