为什么我应该使用 $[ EXPR ] 而不是 $(( EXPR )) ?

qdi*_*dii 4 bash

在解释算术扩展的段落中,Bash 的用户指南揭示了两种评估表达式的不同方法,第一种使用$((?EXPRESSION?)),第二种使用$[?EXPRESSION?]. 这两种方式看起来非常相似,因为我发现的唯一区别是:

$[?EXPRESSION?] 只会计算 EXPRESSION 的结果,不做测试:

然而,我很感兴趣,因为同一份文档建议使用$[?EXPRESSION?]而不是$((?EXPRESSION?)).

在可能的情况下,Bash 用户应该尝试使用带方括号的语法:

如果进行的测试较少,您为什么要这样做?

小智 5

重复问题(附答案)

/sf/ask/169100711/

bash v3.2.48 的联机帮助页说:

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

 $((expression)) 
Run Code Online (Sandbox Code Playgroud)

老格式$ [表达]已被弃用,并且将在bash的即将到来的版本中删除。

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

除了那个答案:

http://manual.cream.org/index.cgi/bash.1#27

与 bash 版本相关的信息:

以下是有关 bash 手册页的一些信息(很难找到有关每个手册页所指版本的信息):

OP链接:

http://www.tldp.org/guides.html Bash 初学者指南版本:1.11 作者:Machtelt Garrels,最后更新:2008 年 12 月

sth (74.6k rep) 引用 bash v3.2.48

来自/sf/ask/169100711/

注意:有关 [] 与 (()) 的更多信息:http : //lists.gnu.org/archive/html/bug-bash/2012-04/msg00033.html

我找到的一个链接:

http://www.gnu.org/software/bash/manual/ 最后更新于 2012 年 8 月 22 日

http://www.gnu.org/software/bash/manual/bash.html#Arithmetic-Expansion