我刚在bash的语法绊倒:

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

当我Google对于这一点,我发现 HTTP:// tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05

  

3.4.6。算术扩展

     

算术膨胀允许一个算术表达式的评估和结果的替换。对于算术扩展的格式是:

$(( EXPRESSION )) 
     

...

     

只要可能,击用户应尽量使用具有方括号中的语法:

$[ EXPRESSION ] 
     

然而,这只会计算表达式的结果,并没有做测试...

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

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

那么,什么测试不与$[...]$((...))做执行,或者是$[...]只是$((...))的旧版?

有帮助吗?

解决方案

对于bash v3.2.48的手册页表示:

  

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

     $((expression))
     

旧格式$ [表达式]已被弃用并将在即将到来的版本除去   的是bash。

所以$[...]是旧的语法不应再使用。

其他提示

@sth是完全正确的。而如果你是好奇为什么现在更详细的语法的青睐,从邮件列表看看这个旧的电子邮件。

http://lists.gnu.org/archive/html/bug -bash / 2012-04 / msg00033.html

“在早期的建议中,使用了形式$ [表达式]。这是功能 相当于“$(())”目前的文本,但反对意见 提出了1988年KornShell已实施“$(())”和 有没有令人信服的理由去创造另一个语法。 此外,“$ []”语法有涉及未成年人的不兼容 图案的情况下,声明“。

我不知道我喜欢的理由“但有人已经做到了这一点更冗长,”但你有它 - 也许是case语句的问题是更引人注目的,比我从这个不起眼的提想象?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top